;;; ROM offsets 030010 - 03400f

$6856-7 = w[0]
$6858-9 = w[1]
$685a-b = w[2]

STATUSES:
 01 = dead
 02 = stone
 04 = poison
 08 = dark
 10 = stop
 20 = sleep
 40 = mute
 80 = conf

PHYSICAL:
$686c   = attacker damage
$686d   = attacker category attack
$686e   = attacker element
$686f   = attacker hit %
$6870   = attacker hit multiplier
$6871   = attacker #hits
$6872   = attacker critical %
$6873   = attacker attack effect
$6876   = target category
$6877   = target elemental weakness
$6878   = target evade %
$6879   = target absorb
$687a   = target mag def
$687b   = target elemental resistance
$687c-d = target HP
$6880   = attacker weapon GFX
$6881   = attacker weapon palette
$6884   = attacker index
$6885   = target index
$6887   = attacker type (0=player, 1=monster)
$6888   = attacker status
$6889   = target status

MAGIC:
$686c   = caster status
$686d   = target status ailments
$686e   = current spell effect
$6870   = current spell hit rate
$6872   = target magic defense
$6873   = Zero?
$6874   = current spell effectivity
$6875   = caster damage
$6876   = target elemental weakness
$6877   = target elemental resistance
$6878   = current spell element
$6879   = caster class ID
$687a-b = target HP
$687d   = target hit multiplier
$687e   = target "courage"
$687f   = target absorb
$6880-1 = target Max HP
$6882   = target damage
$6883   = caster level
$6884   = caster hit %
$6885   = target evade
$6886   = target creature type


$6887   = attacker type (0=player, 1=monster)

$6ba8-b = player palettes

$6bae   = player strike first flag
$6b87-6ba6 = palettes
$6bb7-6bbf = monsters in this battle, $ff if none

$6bd3-6c87 = monster in-RAM struct:
  +00-01 = pointer to in-ROM struct
  +02-03 = HP
  +04    = Absorb
  +05    = Hit multiplier
  +06    = status ailments
  +07    = AI magic rotation index
  +08    = AI special attack rotation index
  +09    = "courage"
  +0a    = Evade %
  +0b    = damage
  +0c    = AI (bug?)
  +0d-0e = Exp
  +0f-10 = Gold
  +11    = Monster index number
  +12    = Max HP low byte (bug?), used in curing sleep
  +13    = 0 (should be Max HP high byte) (bug?), used in curing sleep


;; WEAPON DATA
;         Dmg   Spell Cat   Pal
;      Hit%  Crit% Elem  GFX
8000:  00 0c 0a 00 00 00 a8 27   ; Wooden Nunchucks
8008:  0a 05 05 00 00 00 98 20   ; Small Knife
8010:  00 06 01 00 00 00 a0 27   ; Wooden Staff
8018:  05 09 0a 00 00 00 90 20   ; Rapier
8020:  00 09 01 00 00 00 94 27   ; Iron Hammer
8028:  0a 0f 05 00 00 00 80 20   ; Short Sword
8030:  05 10 03 00 00 00 9c 20   ; Hand Axe
8038:  0a 0a 05 00 00 00 84 2b   ; Scimtar
8040:  00 10 0a 00 00 00 a8 20   ; Iron Nunchucks
8048:  0a 07 05 00 00 00 98 20   ; Large Knife
8050:  00 0e 01 00 00 00 a4 20   ; Iron Staff
8058:  05 0d 0a 00 00 00 90 20   ; Sabre
8060:  0a 14 05 00 00 00 8c 20   ; Long Sword
8068:  05 16 03 00 00 00 9c 25   ; Great Axe
8070:  0a 0f 05 00 00 00 88 20   ; Falchon
8078:  0f 0a 05 00 00 00 98 2c   ; Silver Knife
8080:  0f 17 05 00 00 00 8c 2c   ; Silver Sword
8088:  05 0c 01 00 00 00 94 2c   ; Silver Hammer
8090:  0a 19 04 00 00 00 9c 2c   ; Silver Axe
8098:  14 1a 05 00 10 88 88 26   ; Flame Sword
80a0:  19 1d 05 00 20 00 8c 21   ; Ice Sword
80a8:  0f 13 0a 00 00 02 90 2b   ; Dragon Sword
80b0:  14 15 05 00 00 04 80 22   ; Giant Sword
80b8:  1e 20 05 00 00 08 8c 27   ; Sun Sword
80c0:  0f 13 0a 00 00 20 90 25   ; Coral Sword
80c8:  0f 12 05 00 00 10 80 24   ; Were Sword
80d0:  0f 12 05 00 00 41 88 23   ; Rune Sword
80d8:  00 0c 01 00 00 00 a0 2a   ; Power Staff
80e0:  0f 1c 03 12 00 08 9c 23   ; Light Axe
80e8:  00 06 01 14 00 00 a4 21   ; Heal Staff
80f0:  0a 0c 01 15 00 00 a4 25   ; Mage Staff 
80f8:  23 1e 05 04 00 00 80 27   ; Defense
8100:  0f 0f 01 1f 00 00 a4 2c   ; Wizard Staff
8108:  19 18 1e 00 00 00 88 21   ; Vorpal
8110:  23 16 05 00 00 00 98 2c   ; CatClaw
8118:  0f 12 01 17 00 00 94 24   ; Thor's Hammer
8120:  14 16 0a 26 00 00 90 22   ; Bane Sword
8128:  23 21 1e 00 00 00 98 27   ; Katana
8130:  23 2d 05 00 ff ff 8c 28   ; XCalbur
8138:  32 38 0a 00 00 00 84 20   ; Masmune

;; ARMOR DATA
;         Absor Spell
;      Evade Elem
8140:  02 01 00 00   ; Cloth
8144:  08 04 00 00   ; Wooden Armour
8148:  0f 0f 00 00   ; Chain Armour
814c:  17 18 00 00   ; Iron Armour
8150:  21 22 00 00   ; Steel Armour
8154:  08 12 00 00   ; Silver Armour
8158:  0a 22 20 00   ; Flame Armour
815c:  0a 22 10 00   ; Ice Armour
8160:  0a 2a 40 00   ; Opal Armour
8164:  0a 2a 70 00   ; Dragon Armour
8168:  01 04 00 00   ; Copper Bracelet
816c:  01 0f 00 00   ; Silver Bracelet
8170:  01 18 00 00   ; Gold Bracelet
8174:  01 22 00 00   ; Opal Bracelet
8178:  02 18 18 2c   ; White Shirt
817c:  02 18 24 20   ; Black Shirt
8180:  00 02 00 00   ; Wooden Shield
8184:  00 04 00 00   ; Iron Shield
8188:  00 08 00 00   ; Silver Shield
818c:  00 0c 20 00   ; Flame Shield
8190:  00 0c 10 00   ; Ice Shield
8194:  00 10 40 00   ; Opal Shield
8198:  00 10 02 00   ; Aegis Shield
819c:  00 02 00 00   ; Buckler 
81a0:  02 08 00 00   ; ProCape
81a4:  01 01 00 00   ; Cap
81a8:  03 03 00 00   ; Wooden Helmet
81ac:  05 05 00 00   ; Iron Helmet
81b0:  03 06 00 00   ; Silver Helmet
81b4:  03 08 00 00   ; Opal Helmet
81b8:  03 06 00 14   ; Heal Helmet
81bc:  01 01 ff 00   ; Ribbon
81c0:  01 01 00 00   ; Gloves
81c4:  03 02 00 00   ; Copper Gauntlet
81c8:  05 04 00 00   ; Iron Gauntlet
81cc:  03 06 00 00   ; Silver Gauntlet
81d0:  03 06 00 17   ; Zeus Gauntlet
81d4:  03 06 00 37   ; Power Gauntlet
81d8:  03 08 00 00   ; Opal gauntlet 
81dc:  01 08 08 00   ; ProRing

;; MAGIC DATA
;         Efftv Targ  GFX
;      HitRt Elem  Effct Pal
81e0:  00 10 00 10 07 c0 29 00   ; CURE
81e8:  18 14 00 01 02 c8 21 00   ; HARM
81f0:  00 08 00 10 09 b0 29 00   ; FOG 
81f8:  00 50 00 04 10 b0 22 00   ; RUSE
8200:  18 0a 10 02 01 d0 26 00   ; FIRE
8208:  18 20 01 01 03 e8 2b 00   ; SLEP
8210:  40 14 00 02 0e b8 28 00   ; LOCK
8218:  18 0a 40 02 01 c8 28 00   ; LIT 
8220:  00 08 00 10 08 e0 27 00   ; LAMP
8228:  40 40 01 01 03 e8 2c 00   ; MUTE
8230:  00 40 00 08 0a b0 28 00   ; ALIT
8238:  00 28 00 10 10 b0 23 00   ; INVS
8240:  18 14 20 02 01 d0 21 00   ; ICE 
8248:  18 08 01 01 03 e8 23 00   ; DARK
8250:  00 0e 00 10 0d b8 2b 00   ; TMPR  BUG: wrong effect
;FIX:  00 0e 00 10 0b b8 2b 00
8258:  40 00 01 01 04 e8 2a 00   ; SLOW
8260:  00 21 00 10 07 c0 2b 00   ; CUR2
8268:  18 28 00 01 02 c8 23 00   ; HRM2
8270:  00 10 00 08 0a b0 26 00   ; AFIR
8278:  00 0c 00 08 07 c0 28 00   ; HEAL
8280:  18 1e 10 01 01 d0 27 00   ; FIR2
8288:  40 10 01 02 03 e8 27 00   ; HOLD
8290:  18 1e 40 01 01 c8 27 00   ; LIT2
8298:  40 14 00 01 10 b8 27 00   ; LOK2  BUG: wrong effect
;FIX:  40 14 00 01 0e b8 27 00
82a0:  00 04 00 10 08 e0 2a 00   ; PURE
82a8:  18 28 01 01 05 e8 25 00   ; FEAR
82b0:  00 20 00 08 0a b0 21 00   ; AICE
82b8:  00 40 00 10 08 e0 2c 00   ; AMUT
82c0:  40 20 00 02 03 e8 21 00   ; SLP2
82c8:  00 00 00 10 0c b8 2a 00   ; FAST
82d0:  40 80 01 01 03 e8 26 00   ; CONF
82d8:  18 28 20 01 01 d0 22 00   ; ICE2
82e0:  00 42 00 10 07 c0 2c 00   ; CUR3
82e8:  ff 00 00 10 00 00 00 00   ; LIFE
82f0:  18 3c 00 01 02 c8 25 00   ; HRM3
82f8:  00 30 00 08 07 c0 27 00   ; HEL2   ; BUG: effectivity too high
;FIX:  00 18 00 08 07 c0 27 00
8300:  18 32 10 01 01 d0 25 00   ; FIR3
8308:  28 01 02 01 03 e8 22 00   ; BANE
8310:  ff 00 00 08 00 00 00 00   ; WARP
8318:  40 00 00 02 04 e8 29 00   ; SLO2
8320:  ff 00 00 10 00 00 00 00   ; SOFT
8328:  ff 00 00 08 00 00 00 00   ; EXIT
8330:  00 0c 00 08 09 b0 2a 00   ; FOG2
8338:  00 28 00 08 10 b0 24 00   ; INV2
8340:  18 3c 40 01 01 c8 22 00   ; LIT3
8348:  18 01 08 02 03 d8 20 00   ; RUB 
8350:  28 01 80 01 03 b8 26 00   ; QAKE
8358:  00 10 01 02 12 e8 28 00   ; STUN
8360:  00 00 00 10 0f c0 21 00   ; CUR4
8368:  30 50 00 01 02 c8 2c 00   ; HRM4
8370:  00 89 00 08 0a b0 25 00   ; ARUB
8378:  30 30 00 08 07 c0 25 00   ; HEL3
8380:  18 46 20 01 01 d0 2b 00   ; ICE3
8388:  40 02 02 02 03 c8 20 00   ; BRAK
8390:  00 10 00 04 0d b0 20 00   ; SABR
8398:  00 08 01 02 12 e8 24 00   ; BLND
83a0:  ff 00 00 10 00 00 00 00   ; LIF2
83a8:  6b 50 00 01 01 c8 24 00   ; FADE
83b0:  00 ff 00 10 0a b0 20 00   ; WALL
83b8:  6b 00 00 02 11 b8 20 00   ; XFER
83c0:  6b 64 00 01 01 d0 28 00   ; NUKE
83c8:  30 10 04 01 03 e8 20 00   ; STOP
83d0:  20 01 04 01 03 d8 2b 00   ; ZAP!
83d8:  00 01 08 02 12 d8 28 00   ; XXXX
83e0:  00 10 00 10 07 00 00 00   ; HEAL Potion
83e8:  00 04 00 10 08 00 00 00   ; PURE Potion

;; ENEMY SPECIAL DATA
;         Efftv Targ
;      HitRt Elem  Effct
83f0:  20 18 20 01 01 00 00 00   ; FROST
83f8:  20 0c 10 01 01 00 00 00   ; HEAT
8400:  05 02 02 02 03 00 00 00   ; GLANCE
8408:  00 10 01 02 03 00 00 00   ; GAZE
8410:  18 08 01 01 03 00 00 00   ; FLASH
8418:  20 07 10 01 01 00 00 00   ; SCORCH
8420:  10 01 80 01 03 00 00 00   ; CRACK
8428:  00 01 08 02 03 00 00 00   ; SQUINT
8430:  18 11 00 02 01 00 00 00   ; STARE
8438:  10 01 04 02 03 00 00 00   ; GLARE
8440:  20 32 20 01 01 00 00 00   ; BLIZZARD
8448:  20 40 10 01 01 00 00 00   ; BLAZE
8450:  20 60 10 01 01 00 00 00   ; INFERNO
8458:  20 18 10 01 01 00 00 00   ; CREMATE
8460:  05 02 02 01 03 00 00 00   ; POISON
8468:  00 10 00 01 03 00 00 00   ; TRANCE
8470:  20 44 02 01 01 00 00 00   ; POISON
8478:  20 4c 40 01 01 00 00 00   ; THUNDER
8480:  00 01 08 01 03 00 00 00   ; TOXIC
8488:  18 08 01 02 03 00 00 00   ; SNORTING
8490:  30 50 00 01 01 00 00 00   ; NUCLEAR
8498:  18 08 01 01 03 00 00 00   ; INK
84a0:  00 04 02 01 03 00 00 00   ; STINGER
84a8:  20 10 01 02 03 00 00 00   ; DAZZLE
84b0:  20 40 00 01 01 00 00 00   ; SWIRL
84b8:  20 40 00 01 01 00 00 00   ; TORNADO

84c0:  01   ; CURE: "HP up!"
84c1:  00   ; HARM
84c2:  02   ; FOG : "Armor up"
84c3:  03   ; RUSE: "Easy to dodge"
84c4:  00   ; FIRE
84c5:  00   ; SLEP
84c6:  05   ; LOCK: "Easy to hit"
84c7:  00   ; LIT 
84c8:  00   ; LAMP
84c9:  00   ; MUTE
84ca:  08   ; ALIT: "Defend lightning"
84cb:  03   ; INVS: "Easy to dodge"
84cc:  00   ; ICE 
84cd:  00   ; DARK
84ce:  0a   ; TMPR: "Weapons stronger"
84cf:  0b   ; SLOW: "Lost intelligence"
84d0:  01   ; CUR2: "HP up!"
84d1:  00   ; HRM2
84d2:  0c   ; AFIR: "Defend fire"
84d3:  01   ; HEAL: "HP up!"
84d4:  00   ; FIR2
84d5:  0d   ; HOLD: "Attack halted"
84d6:  00   ; LIT2
84d7:  05   ; LOK2: "Easy to hit"
84d8:  00   ; PURE
84d9:  0f   ; FEAR: "Became terrified"
84da:  10   ; AICE: "Defend cold"
84db:  00   ; AMUT
84dc:  00   ; SLP2
84dd:  12   ; FAST: "Quick shot"
84de:  00   ; CONF
84df:  00   ; ICE2
84e0:  01   ; CUR3: "HP up!"
84e1:  4a   ; LIFE: "Ineffective now"
84e2:  00   ; HRM3
84e3:  01   ; HEL2: "HP up!"
84e4:  00   ; FIR3
84e5:  4d   ; BANE: "Poison smoke"
84e6:  4a   ; WARP: "Ineffective now"
84e7:  0b   ; SLO2: "Lost intelligence"
84e8:  4a   ; SOFT: "Ineffective now"
84e9:  4a   ; EXIT: "Ineffective now"
84ea:  02   ; FOG2: "Armor up"
84eb:  03   ; INV2: "Easy to dodge"
84ec:  00   ; LIT3
84ed:  15   ; RUB : "Erased"
84ee:  16   ; QAKE: "Fell into crack"
84ef:  00   ; STUN
84f0:  18   ; CUR4: "HP max!"
84f1:  00   ; HRM4
84f2:  19   ; ARUB: "Defend magic"
84f3:  01   ; HEL3: "HP up!"
84f4:  00   ; ICE3
84f5:  00   ; BRAK
84f6:  1b   ; SABR: "Weapon became enchanted"
84f7:  00   ; BLND
84f8:  4a   ; LIF2: "Ineffective now"
84f9:  00   ; FADE
84fa:  1c   ; WALL: "Defend all"
84fb:  1d   ; XFER: "Defenseless"
84fc:  00   ; NUKE
84fd:  1e   ; STOP: "Time stopped"
84fe:  1f   ; ZAP!: "Exile to 4th dimension"
84ff:  15   ; XXXX: "Erased"
8500:  00   ; HEAL Potion
8501:  00   ; PURE Potion
8502:  00   ; FROST
8503:  00   ; HEAT
8504:  00   ; GLANCE
8505:  00   ; GAZE
8506:  00   ; FLASH
8507:  00   ; SCORCH
8508:  16   ; CRACK
8509:  15   ; SQUINT
850a:  00   ; STARE
850b:  1f   ; GLARE
850c:  00   ; BLIZZARD
850d:  00   ; BLAZE
850e:  00   ; INFERNO
850f:  00   ; CREMATE
8510:  4d   ; POISON
8511:  00   ; TRANCE
8512:  00   ; POISON
8513:  00   ; THUNDER
8514:  15   ; TOXIC
8515:  00   ; SNORTING
8516:  00   ; NUCLEAR
8517:  00   ; INK
8518:  00   ; STINGER
8519:  00   ; DAZZLE
851a:  00   ; SWIRL
851b:  00   ; TORNADO
851c:  00
851d:  00
851e:  00
851f:  00


;; ENEMY DATA
;                        AI    Absor Hit%  Crit% AttEf MagDf Resist
;      Exp  Gold HP   Fear  Evade #Hits Dmg   AttEl Cat   Weak  
8520:  0006 0006 0008 6a ff 06 04 01 02 04 01 00 00 04 10 00 00   ; IMP	
8534:  0012 0012 0010 78 ff 09 06 01 04 08 01 00 00 04 17 00 00   ; GrIMP	
8548:  0018 0006 0014 69 ff 24 00 01 05 08 01 00 00 00 1c 00 00   ; WOLF	
855c:  005d 0016 0048 6c ff 36 00 01 12 0e 01 00 00 00 2e 00 00   ; GrWolf	
8570:  0087 0043 0044 78 ff 2a 06 01 11 0e 01 02 04 91 2d 00 00   ; WrWolf     
8584:  0192 00c8 005c c8 00 36 00 01 17 19 01 00 00 00 37 10 20   ; FrWOLF     
8598:  0099 0032 005c 86 ff 18 0c 01 17 12 0a 00 00 02 37 00 00   ; IGUANA     
85ac:  09a8 04b0 0128 c8 01 24 12 02 4a 1f 01 00 00 02 8f 20 10   ; AGAMA
85c0:  07b9 0292 00c4 c8 02 18 14 01 36 1e 01 00 00 02 5b 00 00   ; SAURIA
85d4:  036f 036f 00f0 88 ff 30 0c 01 3c 26 01 00 00 04 78 00 00   ; GIANT
85e8:  06d8 06d8 0150 c8 ff 30 10 01 4e 3c 01 00 00 04 96 10 20   ; FrGIANT
85fc:  05e2 05e2 012c c8 ff 30 14 01 53 49 01 00 00 04 87 20 10   ; R.GIANT
8610:  001e 001e 001c 6e ff 48 04 01 07 0a 01 00 00 20 1c 40 90   ; SAHAG
8624:  0069 0069 0040 8e ff 4e 08 01 10 0f 01 00 00 20 2e 40 90   ; R.SAHAG
8638:  0372 0372 00cc c8 ff 60 14 01 33 2f 01 00 00 20 65 40 90   ; WzSAHAG
864c:  0028 0028 0006 ff ff 0c 00 01 02 08 01 00 00 00 0f 00 00   ; PIRATE
8660:  003c 0078 0032 6a ff 18 06 01 0d 0e 01 00 00 00 25 00 80   ; KYZOKU
8674:  010b 0042 0078 79 ff 48 00 01 1e 16 01 00 00 20 46 40 90   ; SHARK
8688:  0939 0258 0158 c8 ff 48 08 01 56 32 01 00 00 20 aa 40 90   ; GrSHARK
869c:  002a 000a 000a 6e 03 54 00 01 02 04 01 00 00 00 0e 40 90   ; OddEYE
86b0:  0e07 0e07 0130 c8 04 18 10 02 4c 1e 01 00 00 20 9c 40 90   ; BigEYE
86c4:  0009 0003 000a 7c ff 0c 00 01 02 0a 01 00 00 08 11 10 2b   ; BONE
86d8:  017a 017a 0090 9c ff 2a 0c 01 24 1a 01 00 00 08 4c 10 2b   ; R.BONE
86ec:  003f 000f 0038 68 ff 18 08 01 0e 11 01 00 00 00 28 10 00   ; CREEP
8700:  00ba 00c8 0054 6a ff 2a 08 08 15 01 01 01 10 00 33 00 00   ; CRAWL
8714:  0120 0048 0078 7a ff 30 04 01 1e 16 01 00 00 00 4c 00 00   ; HYENA
8728:  049e 0258 00c0 92 05 30 08 01 30 1e 01 00 00 00 67 20 10   ; CEREBUS
873c:  00c3 00c3 0064 74 ff 12 0a 01 19 12 01 00 00 04 41 00 00   ; OGRE
8750:  011a 012c 0084 7e ff 1e 0e 01 21 17 01 00 00 04 47 00 00   ; GrOGRE
8764:  02d3 02d3 0090 86 06 36 0a 01 24 17 01 00 00 c4 50 00 80   ; WzOGRE
8778:  007b 0032 0038 6b ff 1e 06 01 0e 06 01 02 04 02 2e 00 00   ; ASP
878c:  00a5 0032 0050 6e ff 24 0a 01 14 16 1f 00 00 02 38 00 00   ; COBRA
87a0:  03bd 0258 00e0 c8 ff 30 0c 01 38 23 00 00 00 22 74 40 90   ; SeaSNAKE
87b4:  00e1 0046 0054 70 ff 36 0a 02 15 16 01 02 04 00 37 00 00   ; SCORPION
87c8:  027f 012c 0094 c8 ff 3c 12 03 25 23 01 02 04 20 55 40 90   ; LOBSTER
87dc:  01e9 01e9 00a4 7c ff 30 04 02 29 16 01 00 00 00 5f 00 00   ; BULL
87f0:  041a 041a 00e0 88 ff 24 0e 01 38 28 01 00 00 08 74 10 2b   ; ZomBULL
8804:  026d 026d 00b8 88 ff 30 0c 03 2e 18 01 00 00 80 64 10 00   ; TROLL
8818:  0354 0354 00d8 c8 ff 30 14 01 36 28 01 00 00 a0 6e 40 80   ; SeaTROLL
882c:  005a 002d 0032 7c ff 24 00 01 0d 0a 01 01 08 09 25 10 ab   ; SHADOW
8840:  00e7 00e7 0056 a0 ff 5a 04 01 16 16 01 01 10 09 34 10 ab   ; IMAGE
8854:  01b0 01b0 0072 a0 ff 6c 0c 01 1d 28 01 01 10 09 43 10 ab   ; WRAITH
8868:  03de 03de 00b4 b8 ff 24 1e 01 2d 5d 01 01 10 09 55 10 ab   ; GHOST
887c:  0018 000c 0014 78 ff 06 00 01 05 0a 01 00 00 08 19 10 ab   ; ZOMBIE
8890:  005d 0032 0030 7c ff 0c 06 03 0c 08 01 01 10 08 24 10 2b   ; GHOUL 
88a4:  0075 0075 0038 a0 ff 2e 0a 03 0e 08 01 01 10 08 28 10 2b   ; GEIST
88b8:  0096 0096 0034 a0 ff 2a 0c 01 0d 14 01 01 10 08 2d 10 2b   ; SPECTER
88cc:  10f8 03e8 01c0 c8 ff 24 0a 01 70 41 0a 00 00 00 c8 00 80   ; WORM
88e0:  0a7b 0384 00c8 7c 07 3e 0e 01 32 2e 01 00 00 00 67 00 80   ; Sand W
88f4:  0687 0190 0118 c8 ff 04 1f 01 46 32 01 00 00 00 8f 20 90   ; Grey W
8908:  0c99 0c99 00a2 c8 08 0c 1e 01 2a 1e 01 00 00 40 5c 00 80   ; EYE
891c:  0001 0001 0168 c8 09 18 3c 01 96 78 28 01 10 89 a0 10 ab   ; PHANTOM
8930:  02bb 02bb 0044 96 02 24 0a 01 11 14 01 02 04 00 37 00 00   ; MEDUSA
8944:  04c2 04c2 0060 c8 02 48 0c 0a 18 0b 01 01 10 01 46 10 a0   ; GrMEDUSA
8958:  030c 030c 00a0 94 ff 30 10 02 28 1e 01 02 04 91 5d 00 00   ; CATMAN
896c:  025b 0320 006e 96 0a 3c 1e 03 1c 14 01 00 00 40 3e 00 fb   ; MANCAT
8980:  04aa 012c 00de 6f ff 30 14 01 38 27 01 02 04 00 74 00 00   ; PEDE
8994:  08c4 03e8 0140 b0 ff 30 18 01 50 49 01 00 00 00 b9 00 30   ; GrPEDE
89a8:  01b6 006c 0084 74 ff 30 08 02 21 16 19 00 00 00 55 00 00   ; TIGER
89bc:  034b 01f4 00c8 b4 ff 2a 08 02 32 18 46 00 00 00 6a 00 00   ; Saber T
89d0:  04b0 07d0 009c c8 0b 48 18 01 27 4c 01 01 10 89 4b 10 ab   ; VAMPIRE
89e4:  0951 0bb8 012c c8 0c 48 1c 01 2a 5a 01 01 10 c9 54 10 ab   ; WzVAMP
89f8:  0084 0050 0050 84 ff 2d 08 04 14 0c 01 00 00 01 35 00 80   ; GARGOYLE
8a0c:  0183 0183 005e 86 0d 48 20 04 18 0a 01 02 00 01 7f 00 b0   ; R.GOYLE
8a20:  0600 0300 0120 c8 ff 12 14 01 48 42 01 00 00 01 82 10 eb   ; EARTH
8a34:  0654 0320 0114 c8 ff 2a 14 01 45 32 01 00 00 01 82 20 9b   ; FIRE
8a48:  06a5 07d0 00c8 c8 0e 78 08 01 32 35 01 00 00 02 c4 50 a2   ; Frost D
8a5c:  0b58 0fa0 00f8 c8 0f 60 1e 01 3e 4b 01 00 00 02 c8 22 90   ; Red D
8a70:  091b 03e7 010c c8 ff 18 1e 01 43 38 01 01 10 0a 87 10 ab   ; ZombieD
8a84:  0054 0014 0018 7c ff 00 ff 01 01 01 01 02 04 00 24 30 cb   ; SCUM
8a98:  00ff 0046 004c 98 ff 04 07 01 13 1e 01 00 00 00 37 40 bb   ; MUCK
8aac:  00fc 0046 004c 90 ff 06 06 01 13 20 01 00 00 00 37 30 cb   ; OOZE
8ac0:  044d 0384 009c c8 ff 18 ff 01 27 31 01 02 04 00 55 10 eb   ; SLIME
8ad4:  001e 0008 001c 6d ff 1e 00 01 07 0a 01 00 00 00 1c 00 00   ; SPIDER
8ae8:  008d 0032 0040 6f ff 18 0c 01 10 05 01 02 04 00 2e 00 00   ; ARACHNID
8afc:  0525 028a 00a4 96 21 48 08 02 29 16 01 00 00 00 5f 00 80   ; MATICOR
8b10:  0488 0488 00e4 84 ff 78 0c 03 39 17 01 00 00 00 73 00 80   ; SPHINX
8b24:  0594 012c 0100 92 ff 38 26 03 40 3c 01 00 00 00 82 00 00   ; R.ANKYLO
8b38:  0a32 0001 0160 90 ff 30 30 01 58 62 01 00 00 00 9c 00 00   ; ANKYLO
8b4c:  012c 012c 0050 ac ff 18 14 01 14 1e 01 01 20 08 3c 10 2b   ; MUMMY
8b60:  03d8 03e8 00bc 94 ff 18 18 01 2f 2b 01 02 20 08 5f 10 2b   ; WzMUMMY
8b74:  00ba 00c8 0032 7c ff 48 04 01 0a 01 01 02 02 00 2f 00 80   ; COCTRICE
8b88:  01a7 01f4 002c 7c 10 48 04 01 0b 14 01 00 00 00 2d 20 90   ; PERILISK
8b9c:  0495 0032 00d4 96 ff 60 0c 01 35 1e 01 02 04 02 73 00 80   ; WYVERN
8bb0:  04c2 01f6 0104 96 ff 3c 16 01 41 28 01 00 00 02 83 00 80   ; WYRM
8bc4:  0d3b 01f6 01e0 90 ff 3c 0a 01 85 41 01 00 00 02 c8 00 00   ; TYRO
8bd8:  1c20 0258 0258 96 ff 3c 0a 01 90 73 1e 00 00 02 c8 00 00   ; T REX
8bec:  00f0 0014 005c 8a ff 48 00 01 17 16 01 00 00 00 44 40 90   ; CARIBE
8c00:  0222 002e 00ac 8e ff 48 14 01 2b 25 01 00 00 00 53 00 00   ; R.CARIBE
8c14:  0330 0384 00b8 8a ff 30 10 02 2e 2a 01 00 00 00 67 40 90   ; GATOR
8c28:  0762 07d0 0120 8e ff 30 14 02 48 38 01 00 00 02 8f 40 90   ; FrGATOR
8c3c:  04c8 0066 00d0 b0 ff 18 18 03 34 14 01 02 04 00 74 40 90   ; OCHO
8c50:  0c75 01f4 0158 c8 ff 18 20 03 56 23 01 02 04 00 aa 00 00   ; NAOCHO
8c64:  0393 0096 00d4 8a ff 24 0e 03 35 1e 01 00 00 02 74 00 00   ; HYDRA
8c78:  04bf 0190 00b6 98 11 24 0e 03 2e 14 01 00 00 02 67 20 10   ; R.HYDRA
8c8c:  04c8 0190 00c8 c8 ff 48 28 02 32 19 01 01 10 00 6e 40 0b   ; GAURD
8ca0:  0fa0 07d0 0190 96 ff 60 30 01 5a 66 01 00 00 00 a0 40 bb   ; SENTRY
8cb4:  07aa 0320 012c c8 ff 48 14 01 44 45 01 00 00 01 82 20 9b   ; WATER
8cc8:  064e 0327 0166 c8 ff 90 04 01 3e 35 01 00 00 01 82 00 8b   ; AIR
8cdc:  0933 0933 0164 c8 12 48 08 01 47 09 01 02 04 60 74 40 90   ; NAGA
8cf0:  0da1 0fa0 01a4 9a 13 30 10 01 58 07 01 02 04 40 8f 00 00   ; GrNAGA
8d04:  0810 09c4 012c c8 14 48 14 04 3c 1e 01 00 00 02 82 20 90   ; CHIMERA
8d18:  11e8 1388 015e c8 15 3c 12 04 46 28 01 00 00 02 8f 20 90   ; JIMERA
8d2c:  0114 012c 0054 7e ff 42 10 02 15 1e 01 00 00 21 62 00 33   ; WIZARD
8d40:  0336 03e7 0070 82 16 30 0c 03 1c 01 01 00 01 00 bb 00 00   ; SORCERER
8d54:  0082 00fa 006a ff ff 0c 0a 01 1b 0f 01 00 00 00 40 00 00   ; GARLAND
8d68:  0fe4 1388 0160 c8 17 60 10 01 44 48 01 00 00 02 c8 20 80   ; Gas D
8d7c:  0cca 07d0 01c6 c8 18 60 14 01 56 5c 01 00 00 02 c8 10 c0   ; Blue D
8d90:  04e9 0320 00b0 c8 19 1c 07 01 2c 40 01 02 04 41 5d 00 7b   ; MudGOL
8da4:  0951 03e8 00c8 c8 1a 18 10 01 32 46 01 00 00 41 6e 00 fb   ; RockGOL
8db8:  1a3d 0bb8 0130 c8 1b 18 64 01 4c 5d 01 00 00 01 8f 00 bb   ; IronGOL
8dcc:  04ef 0708 0104 c8 ff 24 26 02 41 2c 01 00 00 00 87 00 00   ; BADMAN
8de0:  0a8c 0bb8 00be c8 1c 2a 20 01 30 37 01 00 00 41 ad 00 0b   ; EVILMAN
8df4:  08ca 07d0 00a8 ff 2b 4e 28 01 2a 1a 01 00 00 00 aa 00 00   ; ASTOS
8e08:  0447 0447 0069 c8 1d 4e 28 01 1b 1a 01 00 00 40 aa 00 00   ; MAGE
8e1c:  0d5c 0d5c 00c8 9e 1e 5a 26 01 2d 28 01 00 00 40 ba 00 00   ; FIGHTER
8e30:  003f 000f 0040 6a ff 16 02 02 10 0a 01 00 00 00 28 00 00   ; MADPONY
8e44:  04f8 02bc 00c8 c8 1f 84 18 03 32 1e 01 00 00 01 64 20 9b   ; NITEMARE
8e58:  7d00 7d00 03e8 c8 20 60 50 02 c8 80 01 00 00 80 c8 00 fb   ; WarMECH
8e6c:  0898 0bb8 0190 ff 22 18 28 01 31 28 01 01 10 49 78 10 2b   ; LICH
8e80:  07d0 0001 01f4 ff 23 30 32 01 40 32 01 01 10 49 8c 00 2b   ; LICH (2)
8e94:  09ab 0bb8 0258 ff 24 30 32 06 3f 28 01 00 00 41 b7 01 72   ; KARY
8ea8:  07d0 0001 02bc ff 25 3c 3c 06 3f 3c 01 00 00 41 b7 00 72   ; KARY (2)
8ebc:  1095 1388 0320 ff 26 54 3c 08 5a 32 01 00 00 20 a0 40 90   ; KRAKEN
8ed0:  07d0 0001 0384 ff 27 62 46 08 72 46 01 00 00 20 c8 00 90   ; KRAKEN (2)
8ee4:  1578 1770 03e8 ff 28 48 50 04 50 31 01 00 00 02 c8 02 f0   ; TIAMAT
8ef8:  07d0 0001 044c ff 29 5a 5a 04 55 4b 01 00 00 42 c8 00 f0   ; TIAMAT (2)
8f0c:  0000 0000 07d0 ff 2a 64 64 02 c8 64 01 01 10 00 c8 00 ff   ; CHAOS

;; Palettes
8f20:  0f 36 27 16 
8f24:  0f 36 22 13 
8f28:  0f 25 29 1b 
8f2c:  0f 23 26 16 
8f30:  0f 24 30 22 
8f34:  0f 26 2b 19 
8f38:  0f 3a 16 1b 
8f3c:  0f 30 31 22 
8f40:  0f 37 26 16 
8f44:  0f 30 2b 1c 
8f48:  0f 36 21 12 
8f4c:  0f 30 28 19 
8f50:  0f 30 23 1b 
8f54:  0f 37 25 16 
8f58:  0f 38 26 14 
8f5c:  0f 23 29 19 
8f60:  0f 17 31 1c 
8f64:  0f 36 26 14 
8f68:  0f 25 2b 19 
8f6c:  0f 30 2c 13 
8f70:  0f 30 22 12 
8f74:  0f 2b 26 16 
8f78:  0f 16 2c 18 
8f7c:  0f 23 30 00 
8f80:  0f 30 28 1c 
8f84:  0f 30 2a 18 
8f88:  0f 32 1c 0c 
8f8c:  0f 37 27 13 
8f90:  0f 16 37 18 
8f94:  0f 30 28 17 
8f98:  0f 25 2b 19 
8f9c:  0f 30 12 16 
8fa0:  0f 37 16 13 
8fa4:  0f 30 28 1a 
8fa8:  0f 36 26 16 
8fac:  0f 30 37 1a 
8fb0:  0f 30 32 0c 
8fb4:  0f 30 26 16 
8fb8:  0f 30 27 12 
8fbc:  0f 30 27 16 
8fc0:  0f 30 2c 1c 
8fc4:  0f 36 26 16 
8fc8:  0f 26 3c 1b 
8fcc:  0f 25 2a 1a 
8fd0:  0f 1b 27 16 
8fd4:  0f 37 32 00 
8fd8:  0f 37 10 1c 
8fdc:  0f 30 26 00 
8fe0:  0f 17 38 18 
8fe4:  0f 13 37 1b 
8fe8:  0f 30 27 18 
8fec:  0f 14 30 22 
8ff0:  0f 36 26 16 
8ff4:  0f 36 10 00 
8ff8:  0f 30 28 04 
8ffc:  0f 30 16 23 
9000:  0f 16 14 30 
9004:  0f 16 14 28 
9008:  0f 27 30 23 
900c:  0f 3b 13 23 
9010:  0f 16 2b 12 
9014:  0f 27 2b 13 
9018:  0f 23 28 18 
901c:  0f 30 28 18 

;; AI DATA
;         Spec%
;      Mag%  |--------Magic--------|    |-Special-|
9020:  00 20 ff ff ff ff ff ff ff ff ff 00 00 00 00 ff   ; FrWOLF 
9030:  00 20 ff ff ff ff ff ff ff ff ff 01 01 01 01 ff   ; AGAMA 
9040:  00 40 ff ff ff ff ff ff ff ff ff 02 02 02 02 ff   ; SAURIA 
9050:  00 80 ff ff ff ff ff ff ff ff ff 03 03 03 03 ff   ; OddEYE 
9060:  00 40 ff ff ff ff ff ff ff ff ff 03 04 03 04 ff   ; BigEYE 
9070:  00 40 ff ff ff ff ff ff ff ff ff 05 05 05 05 ff   ; CERBERUS
9080:  40 00 03 0d 05 15 1f ff ff ff ff ff ff ff ff ff   ; WzOGRE
9090:  00 40 ff ff ff ff ff ff ff ff ff 06 06 06 06 ff   ; Sand W
90a0:  50 50 3f 35 2d 16 15 09 0f 05 ff 02 07 03 08 ff   ; EYE
90b0:  40 40 3d 3e 3b 35 2d 15 09 0f ff 09 09 09 09 ff   ; PHANTOM
90c0:  60 00 14 0f 0d 05 04 07 00 05 ff ff ff ff ff ff   ; MANCAT
90d0:  00 20 ff ff ff ff ff ff ff ff ff 17 17 17 17 ff   ; VAMPIRE
90e0:  20 20 12 09 1f 1f 16 16 14 14 ff 17 17 17 17 ff   ; WzVAMP
90f0:  40 00 14 15 04 04 ff ff ff ff ff ff ff ff ff ff   ; R.GOYLE
9100:  00 40 ff ff ff ff ff ff ff ff ff 0a 0a 0a ff ff   ; Frost D
9110:  00 40 ff ff ff ff ff ff ff ff ff 0b 0b 0b ff ff   ; Red D
9120:  00 20 ff ff ff ff ff ff ff ff ff 07 07 07 07 ff   ; PERELISK
9130:  00 40 ff ff ff ff ff ff ff ff ff 0d 0d ff ff ff   ; R.HYDRA
9140:  60 00 16 15 0f 0d 07 06 05 07 ff ff ff ff ff ff   ; NAGA
9150:  60 00 03 09 0f 0d 05 04 07 13 ff ff ff ff ff ff   ; GrNAGA
9160:  00 40 ff ff ff ff ff ff ff ff ff 0d 0d 0d ff ff   ; CHIMERA
9170:  00 40 ff ff ff ff ff ff ff ff ff 0d 0e 0d 0e ff   ; JIMERA
9180:  00 40 ff ff ff ff ff ff ff ff ff 0f 0f 0f 0f ff   ; SORCERER
9190:  00 40 ff ff ff ff ff ff ff ff ff 10 10 10 ff ff   ; Gas D
91a0:  00 40 ff ff ff ff ff ff ff ff ff 11 11 11 ff ff   ; Blue D
91b0:  20 00 1d ff ff ff ff ff ff ff ff ff ff ff ff ff   ; MudGOL
91c0:  30 00 0f 0f 0f 0f 0f 0f 0f 0f ff ff ff ff ff ff   ; RockGOL
91d0:  00 10 ff ff ff ff ff ff ff ff ff 12 12 12 12 ff   ; IronGOL
91e0:  20 00 3b 3c 3b 3f 37 ff ff ff ff ff ff ff ff ff   ; BADMAN
91f0:  40 00 2d 2c 24 25 27 24 2f 2c ff ff ff ff ff ff   ; MAGE
9200:  30 00 3a 3b 33 2a 2b 30 23 20 ff ff ff ff ff ff   ; FIGHTER
9210:  00 20 ff ff ff ff ff ff ff ff ff 13 13 13 13 ff   ; NITEMARE
9220:  00 20 ff ff ff ff ff ff ff ff ff 14 14 14 14 ff   ; WarMECH
9230:  00 40 ff ff ff ff ff ff ff ff ff 16 16 16 16 ff   ; MANTICOR
9240:  60 00 1f 1c 1d 16 15 14 0f 05 ff ff ff ff ff ff   ; LICH
9250:  60 00 3c 3d 3e 3f 3c 3d 3e 3f ff ff ff ff ff ff   ; LICH 2
9260:  30 00 14 0d 14 0d 14 15 14 15 ff ff ff ff ff ff   ; KARY
9270:  30 00 24 2d 24 2d 24 2f 24 2f ff ff ff ff ff ff   ; KARY 2
9280:  00 20 ff ff ff ff ff ff ff ff ff 15 15 15 15 ff   ; KRAKEN
9290:  30 20 16 16 16 16 16 16 16 16 ff 15 15 15 15 ff   ; KRAKEN 2
92a0:  00 40 ff ff ff ff ff ff ff ff ff 11 10 0a 0b ff   ; TIAMAT
92b0:  40 40 25 1f 16 14 25 1f 16 14 ff 11 10 0a 0b ff   ; TIAMAT 2
92c0:  40 40 34 2c 27 30 24 1f 1d 3c ff 06 0c 18 19 ff   ; CHAOS
92d0:  60 00 2d 27 1d 14 16 0f 0d 05 ff ff ff ff ff ff   ; ASTOS

92e0: 20 96 ac     JSR $ac96  ; Rearrange warriors based on statuses
92e3: 20 c4 ab     JSR $abc4
92e6: ad 86 6b     LDA $6b86
92e9: c9 ff        CMP #$ff
92eb: d0 4d        BNE +$4d  [$933a]
92ed: a9 78        LDA #$78
92ef: 8d 86 6b     STA $6b86
92f2: d0 36        BNE +$36  [$932a]

;; garbage?
92f4: a0 a9 78 8d  .DB $a0, $a9, $78, $8d
92f8: 86 6b d0 29  .DB $86, $6b, $d0, $29
92fc: f2 38 60 20  .DB $f2, $38, $60, $20

9300: 4c e0 92     JMP $92e0
9303: 4c 55 93     JMP $9355

; Start battle here???
; If so, at this point the monsters in the battle have already been decided.
9306: 20 64 af     JSR $af64   ; Initialize monsters for battle
9309: a9 08        LDA #$08
930b: 8d b7 68     STA $68b7
930e: a9 0e        LDA #$0e
9310: 8d b8 68     STA $68b8
9313: 20 0c f2     JSR $f20c   ; intialize memory in the $691e-6aed range (zero except for $691F-6936)
9316: 20 8c ab     JSR $ab8c   ; graphics related?
9319: a9 1e        LDA #$1e
931b: 8d b8 68     STA $68b8
931e: 20 24 97     JSR $9724   ; Setup player graphics?
9321: 20 eb ac     JSR $aceb   ; Initialize players for battle
;FIX: 20 f2 ac     JSR $acf2   ; relocated routine for weapon bug fix
9324: 20 50 aa     JSR $aa50
9327: 4c ae 93     JMP $93ae

932a: 20 00 fe     JSR $fe00   ; wait for V-blank
932d: a9 00        LDA #$00
932f: 38           SEC
9330: e9 01        SBC #$01
9332: d0 fb        BNE +$fb  [$932f]
9334: ce 86 6b     DEC $6b86
9337: d0 f1        BNE +$f1  [$932a]
9339: 38           SEC
933a: 60           RTS

933b: ad 86 6b     LDA $6b86
933e: d0 01        BNE +$01  [$9341]
9340: 60           RTS
9341: c9 02        CMP #$02
9343: d0 03        BNE +$03  [$9348]
9345: 20 43 9e     JSR $9e43
9348: a9 03        LDA #$03
934a: 85 96        STA $96
934c: a9 9a        LDA #$9a
934e: 85 97        STA $97
9350: a9 0b        LDA #$0b
9352: 4c 09 f2     JMP $f209  ; Jump to address p[$96] in bank $6bb1

9355: 20 c4 ab     JSR $abc4
9358: 68           PLA
9359: 68           PLA
935a: 4c 00 c0     JMP $c000  ; Restart the game

935d: 48           PHA
935e: 98           TYA
935f: 48           PHA
9360: 8a           TXA
9361: 48           PHA
9362: ad 7a 6b     LDA $6b7a
9365: 0a           ASL
9366: 0a           ASL
9367: a8           TAY
9368: 68           PLA
9369: 99 90 68     STA $6890,Y
936c: 68           PLA
936d: 99 91 68     STA $6891,Y
9370: 68           PLA
9371: 99 8f 68     STA $688f,Y
9374: ad 7a 6b     LDA $6b7a
9377: 4c 06 9e     JMP $9e06
937a: ad 7a 6b     LDA $6b7a
937d: f0 14        BEQ +$14  [$9393]
937f: 38           SEC
9380: e9 01        SBC #$01
9382: 20 45 a1     JSR $a145   ; Warrior A structs: p[$82]=permanent, p[$80]=in-battle
9385: a0 01        LDY #$01
9387: b1 82        LDA ($82),Y
9389: 29 33        AND #$33
938b: f0 06        BEQ +$06  [$9393]
938d: ce 7a 6b     DEC $6b7a
9390: 4c 7a 93     JMP $937a
9393: ac 7a 6b     LDY $6b7a
9396: f0 01        BEQ +$01  [$9399]
9398: 88           DEY
9399: b9 a3 68     LDA $68a3,Y
939c: c9 02        CMP #$02
939e: f0 02        BEQ +$02  [$93a2]
93a0: d0 0b        BNE +$0b  [$93ad]
93a2: be a7 68     LDX $68a7,Y
93a5: fe af 6b     INC $6baf,X
93a8: a9 00        LDA #$00
93aa: 99 a3 68     STA $68a3,Y
93ad: 60           RTS

93ae: ad 39 60     LDA $6039
93b1: 8d af 6b     STA $6baf
93b4: ad 3a 60     LDA $603a
93b7: 8d b0 6b     STA $6bb0
93ba: a0 1c        LDY #$1c
93bc: a9 00        LDA #$00
93be: 99 8e 68     STA $688e,Y
93c1: 88           DEY
93c2: d0 fa        BNE +$fa  [$93be]
93c4: a9 00        LDA #$00
93c6: 8d f8 6a     STA $6af8
93c9: 8d ae 6b     STA $6bae  ; player strike first
93cc: 8d 8c 6c     STA $6c8c
93cf: ad 91 6d     LDA $6d91  ; can't run flag -> no surprise either
93d2: 29 01        AND #$01
93d4: d0 4a        BNE +$4a  [$9420]
93d6: a9 00        LDA #$00
93d8: 8d 57 68     STA $6857
93db: ad 11 61     LDA $6111  ; w[0] = (Agility+Luck)/8 for lead warrior
93de: 18           CLC
93df: 6d 14 61     ADC $6114
93e2: 4a           LSR
93e3: 4a           LSR
93e4: 4a           LSR
93e5: 8d 56 68     STA $6856
93e8: a2 64        LDX #$64    ;; w[0] += w[0]..100
93ea: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
93ed: aa           TAX
93ee: a9 00        LDA #$00
93f0: 20 dd ae     JSR $aedd   ; w[A] = clamp(w[A] + X)
93f3: ae 90 6d     LDX $6d90   ; battle surprise factor?
93f6: a9 00        LDA #$00
93f8: 20 0a af     JSR $af0a   ; w[A] = clamp(w[A] - X)
93fb: ac 56 68     LDY $6856
93fe: ae 57 68     LDX $6857
9401: 20 b2 a4     JSR $a4b2   ; Clamp XY to 0
9404: 98           TYA
9405: c9 0b        CMP #$0b    ; Total < 11 -> monster strike first
9407: 90 0f        BCC +$0f  [$9418]
9409: c9 5a        CMP #$5a    ; Total < 90 -> normal
940b: 90 13        BCC +$13  [$9420]
940d: a9 22        LDA #$22
940f: 20 07 aa     JSR $aa07
9412: ee ae 6b     INC $6bae   ; player strike first
9415: 4c 20 94     JMP $9420
9418: a9 23        LDA #$23
941a: 20 07 aa     JSR $aa07
941d: 4c 52 94     JMP $9452
9420: 20 a4 bb     JSR $bba4   ; all this must involve getting the player's commands
9423: 20 12 f2     JSR $f212
9426: 20 15 f2     JSR $f215
9429: 20 0c 98     JSR $980c
942c: a0 1c        LDY #$1c
942e: a9 00        LDA #$00
9430: 8d 8c 6c     STA $6c8c
9433: 99 8e 68     STA $688e,Y
9436: 88           DEY
9437: d0 fa        BNE +$fa  [$9433]
9439: a9 00        LDA #$00
943b: 20 77 94     JSR $9477
943e: a9 01        LDA #$01
9440: 20 77 94     JSR $9477
9443: a9 02        LDA #$02
9445: 20 77 94     JSR $9477
9448: a9 03        LDA #$03
944a: 20 77 94     JSR $9477
944d: a9 02        LDA #$02
944f: 20 0f f2     JSR $f20f
9452: 20 69 a1     JSR $a169   ; Execute a round of battle
9455: 20 3b 93     JSR $933b
9458: 4c 20 94     JMP $9420

945b: ad 7a 6b     LDA $6b7a
945e: 0a           ASL
945f: a8           TAY
9460: b9 6f 94     LDA $946f,Y
9463: 85 88        STA $88
9465: b9 70 94     LDA $9470,Y
9468: 85 89        STA $89
946a: 68           PLA
946b: 68           PLA
946c: 6c 88 00     JMP ($0088)
946f: 39 94 39     AND $3994,Y
9472: 94 3e        STY $3e,X
9474: 94 43        STY $43,X
9476: 94           .DB $94

9477: 8d 7a 6b     STA $6b7a
947a: ad 7a 6b     LDA $6b7a
947d: 20 45 a1     JSR $a145   ; Warrior A structs: p[$82]=permanent, p[$80]=in-battle
9480: a0 01        LDY #$01
9482: b1 82        LDA ($82),Y
9484: 29 33        AND #$33
9486: f0 0e        BEQ +$0e  [$9496]
9488: 29 03        AND #$03
948a: 48           PHA
948b: ad 7a 6b     LDA $6b7a
948e: 0a           ASL
948f: 0a           ASL
9490: a8           TAY
9491: 68           PLA
9492: 99 8f 68     STA $688f,Y
9495: 60           RTS
9496: ad 7a 6b     LDA $6b7a
9499: 20 01 9e     JSR $9e01
949c: 20 2c 9a     JSR $9a2c
949f: c9 02        CMP #$02
94a1: d0 15        BNE +$15  [$94b8]
94a3: ad 7a 6b     LDA $6b7a
94a6: 20 06 9e     JSR $9e06
94a9: 20 7a 93     JSR $937a
94ac: 4c 5b 94     JMP $945b
94af: ad 7a 6b     LDA $6b7a
94b2: 20 06 9e     JSR $9e06
94b5: 4c 96 94     JMP $9496
94b8: ad aa 6a     LDA $6aaa
94bb: 29 01        AND #$01
94bd: f0 0b        BEQ +$0b  [$94ca]
94bf: ad 7a 6b     LDA $6b7a
94c2: 09 80        ORA #$80
94c4: a8           TAY
94c5: a9 20        LDA #$20
94c7: 4c 5d 93     JMP $935d
94ca: ad ab 6a     LDA $6aab
94cd: 29 03        AND #$03
94cf: 0a           ASL
94d0: a8           TAY
94d1: b9 de 94     LDA $94de,Y
94d4: 85 88        STA $88
94d6: b9 df 94     LDA $94df,Y
94d9: 85 89        STA $89
94db: 6c 88 00     JMP ($0088)

94de: e6 94        .DW $94e6
94e0: f5 94        .DW $94f5
94e2: f5 95        .DW $95f5
94e4: 79 96        .DW $9679

94e6: 20 a4 9a     JSR $9aa4
94e9: c9 02        CMP #$02
94eb: d0 03        BNE +$03  [$94f0]
94ed: 4c af 94     JMP $94af
94f0: a9 04        LDA #$04
94f2: 4c 5d 93     JMP $935d

94f5: ad 7a 6b     LDA $6b7a
94f8: 20 14 9c     JSR $9c14
94fb: 48           PHA
94fc: a9 01        LDA #$01
94fe: 20 0f f2     JSR $f20f
9501: 68           PLA
9502: c9 02        CMP #$02
9504: d0 03        BNE +$03  [$9509]
9506: 4c af 94     JMP $94af
9509: ad 7a 6b     LDA $6b7a
950c: 0a           ASL
950d: 0a           ASL
950e: 0a           ASL
950f: 0a           ASL
9510: 0a           ASL
9511: 0a           ASL
9512: 8d b3 68     STA $68b3
9515: 8d b4 68     STA $68b4
9518: ad f8 6a     LDA $6af8
951b: 29 01        AND #$01
951d: 0a           ASL
951e: 0a           ASL
951f: 48           PHA
9520: 0a           ASL
9521: 0a           ASL
9522: 18           CLC
9523: 6d b3 68     ADC $68b3
9526: 8d b3 68     STA $68b3
9529: 68           PLA
952a: 18           CLC
952b: 6d b4 68     ADC $68b4
952e: 8d b4 68     STA $68b4
9531: ad ab 6a     LDA $6aab
9534: 0a           ASL
9535: 0a           ASL
9536: 18           CLC
9537: 6d aa 6a     ADC $6aaa
953a: 18           CLC
953b: 6d b3 68     ADC $68b3
953e: a8           TAY
953f: b9 00 63     LDA $6300,Y
9542: d0 06        BNE +$06  [$954a]
9544: 20 fe 96     JSR $96fe
9547: 4c f5 94     JMP $94f5
954a: 8d 7d 6b     STA $6b7d
954d: ad ab 6a     LDA $6aab
9550: 29 03        AND #$03
9552: 18           CLC
9553: 6d b4 68     ADC $68b4
9556: aa           TAX
9557: bd 20 63     LDA $6320,X
955a: f0 e8        BEQ +$e8  [$9544]
955c: ac 7a 6b     LDY $6b7a
955f: a9 01        LDA #$01
9561: 99 a3 68     STA $68a3,Y
9564: 8a           TXA
9565: 99 a7 68     STA $68a7,Y
9568: ce 7d 6b     DEC $6b7d
956b: ad 7d 6b     LDA $6b7d
956e: 20 11 97     JSR $9711
9571: 85 80        STA $80
9573: 86 81        STX $81
9575: a0 05        LDY #$05
9577: b1 80        LDA ($80),Y
9579: 8d b3 68     STA $68b3
957c: a0 06        LDY #$06
957e: b1 80        LDA ($80),Y
9580: 8d b4 68     STA $68b4
9583: ad 7a 6b     LDA $6b7a
9586: 0a           ASL
9587: a8           TAY
9588: ad b3 68     LDA $68b3
958b: 99 7e 6b     STA $6b7e,Y
958e: ad b4 68     LDA $68b4
9591: 99 7f 6b     STA $6b7f,Y
9594: a0 03        LDY #$03
9596: b1 80        LDA ($80),Y
9598: 4a           LSR
9599: 90 0a        BCC +$0a  [$95a5]
959b: a0 ff        LDY #$ff
959d: a9 40        LDA #$40
959f: ae 7d 6b     LDX $6b7d
95a2: 4c 5d 93     JMP $935d
95a5: 4a           LSR
95a6: 90 12        BCC +$12  [$95ba]
95a8: 20 a4 9a     JSR $9aa4
95ab: c9 02        CMP #$02
95ad: d0 03        BNE +$03  [$95b2]
95af: 4c f5 94     JMP $94f5
95b2: a9 40        LDA #$40
95b4: ae 7d 6b     LDX $6b7d
95b7: 4c 5d 93     JMP $935d
95ba: 4a           LSR
95bb: 90 0e        BCC +$0e  [$95cb]
95bd: ad 7a 6b     LDA $6b7a
95c0: 09 80        ORA #$80
95c2: a8           TAY
95c3: a9 40        LDA #$40
95c5: ae 7d 6b     LDX $6b7d
95c8: 4c 5d 93     JMP $935d
95cb: 4a           LSR
95cc: 90 0a        BCC +$0a  [$95d8]
95ce: a9 40        LDA #$40
95d0: a0 fe        LDY #$fe
95d2: ae 7d 6b     LDX $6b7d
95d5: 4c 5d 93     JMP $935d
95d8: ad 7a 6b     LDA $6b7a
95db: 20 3a 9a     JSR $9a3a
95de: c9 02        CMP #$02
95e0: d0 03        BNE +$03  [$95e5]
95e2: 4c f5 94     JMP $94f5
95e5: ad ab 6a     LDA $6aab
95e8: 29 03        AND #$03
95ea: 09 80        ORA #$80
95ec: a8           TAY
95ed: a9 40        LDA #$40
95ef: ae 7d 6b     LDX $6b7d
95f2: 4c 5d 93     JMP $935d

95f5: ad af 6b     LDA $6baf
95f8: 0d b0 6b     ORA $6bb0
95fb: d0 06        BNE +$06  [$9603]
95fd: 20 fe 96     JSR $96fe
9600: 4c af 94     JMP $94af
9603: 20 24 f2     JSR $f224
9606: 20 06 9c     JSR $9c06
9609: 48           PHA
960a: a9 01        LDA #$01
960c: 20 0f f2     JSR $f20f
960f: 68           PLA
9610: c9 02        CMP #$02
9612: d0 03        BNE +$03  [$9617]
9614: 4c af 94     JMP $94af
9617: ad ab 6a     LDA $6aab
961a: 29 01        AND #$01
961c: 8d 7d 6b     STA $6b7d
961f: d0 0b        BNE +$0b  [$962c]
9621: ad af 6b     LDA $6baf
9624: d0 19        BNE +$19  [$963f]
9626: 20 fe 96     JSR $96fe
9629: 4c af 94     JMP $94af
962c: ad b0 6b     LDA $6bb0
962f: d0 06        BNE +$06  [$9637]
9631: 20 fe 96     JSR $96fe
9634: 4c af 94     JMP $94af
9637: a9 01        LDA #$01
9639: 8d 56 68     STA $6856
963c: 4c 44 96     JMP $9644
963f: a9 00        LDA #$00
9641: 8d 56 68     STA $6856
9644: ad 7a 6b     LDA $6b7a
9647: 20 3a 9a     JSR $9a3a
964a: c9 02        CMP #$02
964c: d0 03        BNE +$03  [$9651]
964e: 4c f5 95     JMP $95f5
9651: ac 7a 6b     LDY $6b7a
9654: a9 02        LDA #$02
9656: 99 a3 68     STA $68a3,Y
9659: ad 56 68     LDA $6856
965c: 99 a7 68     STA $68a7,Y
965f: ae 56 68     LDX $6856
9662: de af 6b     DEC $6baf,X
9665: ad ab 6a     LDA $6aab
9668: 29 03        AND #$03
966a: 09 80        ORA #$80
966c: a8           TAY
966d: ad 7d 6b     LDA $6b7d
9670: 18           CLC
9671: 69 40        ADC #$40
9673: aa           TAX
9674: a9 08        LDA #$08
9676: 4c 5d 93     JMP $935d

9679: a9 00        LDA #$00
967b: a2 08        LDX #$08
967d: a0 18        LDY #$18
967f: 11 82        ORA ($82),Y
9681: c8           INY
9682: ca           DEX
9683: d0 fa        BNE +$fa  [$967f]
9685: 29 ff        AND #$ff
9687: d0 06        BNE +$06  [$968f]
9689: 20 fe 96     JSR $96fe
968c: 4c af 94     JMP $94af
968f: 20 21 f2     JSR $f221
9692: 20 f8 9b     JSR $9bf8
9695: 48           PHA
9696: a9 01        LDA #$01
9698: 20 0f f2     JSR $f20f
969b: 68           PLA
969c: c9 02        CMP #$02
969e: d0 03        BNE +$03  [$96a3]
96a0: 4c af 94     JMP $94af
96a3: ad aa 6a     LDA $6aaa
96a6: 29 01        AND #$01
96a8: 85 88        STA $88
96aa: 0a           ASL
96ab: 0a           ASL
96ac: 8d b3 68     STA $68b3
96af: ad ab 6a     LDA $6aab
96b2: 29 03        AND #$03
96b4: 18           CLC
96b5: 6d b3 68     ADC $68b3
96b8: 69 18        ADC #$18
96ba: a8           TAY
96bb: b1 82        LDA ($82),Y
96bd: 29 7f        AND #$7f
96bf: f0 c8        BEQ +$c8  [$9689]
96c1: 85 89        STA $89
96c3: c6 89        DEC $89
96c5: a5 88        LDA $88
96c7: d0 13        BNE +$13  [$96dc]
96c9: a5 89        LDA $89
96cb: ac 7a 6b     LDY $6b7a
96ce: 18           CLC
96cf: 69 1c        ADC #$1c
96d1: 99 9f 68     STA $689f,Y
96d4: a5 89        LDA $89
96d6: 20 05 ac     JSR $ac05   ; XA = pointer to data for weapon A
96d9: 4c ec 96     JMP $96ec
96dc: a5 89        LDA $89
96de: ac 7a 6b     LDY $6b7a
96e1: 18           CLC
96e2: 69 44        ADC #$44
96e4: 99 9f 68     STA $689f,Y
96e7: a5 89        LDA $89
96e9: 20 14 ac     JSR $ac14
96ec: 85 88        STA $88
96ee: 86 89        STX $89
96f0: a0 03        LDY #$03
96f2: b1 88        LDA ($88),Y
96f4: aa           TAX
96f5: ca           DEX
96f6: ac 7a 6b     LDY $6b7a
96f9: a9 10        LDA #$10
96fb: 4c 5d 93     JMP $935d

96fe: a9 04        LDA #$04
9700: a2 48        LDX #$48
9702: a0 a0        LDY #$a0
9704: 20 18 f2     JSR $f218
9707: 20 c7 97     JSR $97c7
970a: f0 fb        BEQ +$fb  [$9707]
970c: a9 01        LDA #$01
970e: 4c 0f f2     JMP $f20f

9711: a2 08        LDX #$08
9713: 20 09 ae     JSR $ae09   ; XA = X*A
9716: 18           CLC
9717: 69 e0        ADC #$e0
9719: 8d b3 68     STA $68b3
971c: 8a           TXA
971d: 69 81        ADC #$81
971f: aa           TAX
9720: ad b3 68     LDA $68b3
9723: 60           RTS

; Setup player graphics?
9724: a9 00        LDA #$00
9726: 8d d1 6a     STA $6ad1
9729: 8d d2 6a     STA $6ad2
972c: 20 a7 97     JSR $97a7   ; Clear sprites
972f: 20 99 97     JSR $9799
9732: 20 8a 97     JSR $978a   ; Enable screen
9735: a9 00        LDA #$00
9737: 8d a3 6a     STA $6aa3
973a: 8d f8 6a     STA $6af8
973d: 8d ee 6a     STA $6aee
9740: a9 b0        LDA #$b0
9742: 8d d3 6a     STA $6ad3
9745: 8d d7 6a     STA $6ad7
9748: 8d db 6a     STA $6adb
974b: 8d df 6a     STA $6adf
974e: a9 30        LDA #$30
9750: 8d d4 6a     STA $6ad4
9753: a9 48        LDA #$48
9755: 8d d8 6a     STA $6ad8
9758: a9 60        LDA #$60
975a: 8d dc 6a     STA $6adc
975d: a9 78        LDA #$78
975f: 8d e0 6a     STA $6ae0
9762: a9 00        LDA #$00
9764: 8d d5 6a     STA $6ad5
9767: a9 20        LDA #$20
9769: 8d d9 6a     STA $6ad9
976c: a9 40        LDA #$40
976e: 8d dd 6a     STA $6add
9771: a9 60        LDA #$60
9773: 8d e1 6a     STA $6ae1
; alternate entry point, that skips setting up some memory stuff
9776: a9 00        LDA #$00
9778: 20 b2 9d     JSR $9db2   ; Player A: Dead -> 0HP, and set crouch/not crouch
977b: a9 01        LDA #$01
977d: 20 b2 9d     JSR $9db2   ; Player A: Dead -> 0HP, and set crouch/not crouch
9780: a9 02        LDA #$02
9782: 20 b2 9d     JSR $9db2   ; Player A: Dead -> 0HP, and set crouch/not crouch
9785: a9 03        LDA #$03
9787: 4c b2 9d     JMP $9db2   ; Player A: Dead -> 0HP, and set crouch/not crouch

; Enable screen
978a: ad b8 68     LDA $68b8
978d: 8d 01 20     STA $2001
9790: a9 00        LDA #$00
9792: 8d 05 20     STA $2005
9795: 8d 05 20     STA $2005
9798: 60           RTS

9799: 20 1e f2     JSR $f21e   ; $ff=$68b7 and wait for V-blank
979c: ad 02 20     LDA $2002
979f: a9 02        LDA #$02    ; upload sprites
97a1: 8d 14 40     STA $4014
97a4: 4c 7c a0     JMP $a07c   ; some sound thing

; Clear sprites
97a7: a2 00        LDX #$00
97a9: a9 f0        LDA #$f0
97ab: 9d 00 02     STA $0200,X
97ae: e8           INX
97af: d0 fa        BNE +$fa  [$97ab]
97b1: 60           RTS

; Clear 1st 4 sprites (cursor?)
97b2: a2 00        LDX #$00
97b4: a9 f0        LDA #$f0
97b6: 9d 00 02     STA $0200,X
97b9: e8           INX
97ba: e0 10        CPX #$10
97bc: d0 f8        BNE +$f8  [$97b6]
97be: ad d1 6a     LDA $6ad1
97c1: 29 0f        AND #$0f
97c3: 8d d1 6a     STA $6ad1
97c6: 60           RTS

97c7: 20 27 f2     JSR $f227   ;; Cycle PRNG for randomness ; A = RND (0 .. 255) ??
97ca: a0 01        LDY #$01
97cc: 8c 16 40     STY $4016   ; get button presses
97cf: 88           DEY
97d0: 8c 16 40     STY $4016
97d3: a0 08        LDY #$08
97d5: ad 16 40     LDA $4016
97d8: 4a           LSR
97d9: b0 01        BCS +$01  [$97dc]
97db: 4a           LSR
97dc: 6e b3 68     ROR $68b3
97df: 88           DEY
97e0: d0 f3        BNE +$f3  [$97d5]
97e2: 20 29 ab     JSR $ab29   ; wait for V-blank and do sound
97e5: ad b3 68     LDA $68b3
97e8: 60           RTS

97e9: 98           TYA
97ea: 48           PHA
97eb: ad b5 68     LDA $68b5
97ee: 0a           ASL
97ef: 0a           ASL
97f0: a8           TAY
97f1: ad b3 68     LDA $68b3
97f4: 99 02 02     STA $0202,Y
97f7: ad b4 68     LDA $68b4
97fa: 99 01 02     STA $0201,Y
97fd: ad b1 68     LDA $68b1
9800: 99 00 02     STA $0200,Y
9803: ad af 68     LDA $68af
9806: 99 03 02     STA $0203,Y
9809: 68           PLA
980a: a8           TAY
980b: 60           RTS

980c: ad ee 6a     LDA $6aee
980f: f0 08        BEQ +$08  [$9819]
9811: ad d1 6a     LDA $6ad1
9814: 29 0f        AND #$0f
9816: 8d d1 6a     STA $6ad1
9819: a9 00        LDA #$00  ; get player dead flags in low 4 bits of $6ad1, and
981b: 85 88        STA $88   ; stoned flags in $6ad2. #1 is bit 0.
981d: 85 89        STA $89
981f: aa           TAX
9820: 8a           TXA
9821: 38           SEC
9822: e9 40        SBC #$40
9824: aa           TAX
9825: bd 01 61     LDA $6101,X
9828: 4a           LSR
9829: 26 88        ROL $88
982b: 4a           LSR
982c: 26 89        ROL $89
982e: 8a           TXA
982f: d0 ef        BNE +$ef  [$9820]
9831: ad d1 6a     LDA $6ad1
9834: 29 f0        AND #$f0
9836: 05 88        ORA $88
9838: 8d d1 6a     STA $6ad1
983b: ad d2 6a     LDA $6ad2
983e: 29 f0        AND #$f0
9840: 05 89        ORA $89
9842: 8d d2 6a     STA $6ad2
9845: ad d1 6a     LDA $6ad1
9848: 29 10        AND #$10
984a: f0 27        BEQ +$27  [$9873]
984c: ae e3 6a     LDX $6ae3
984f: 8e af 68     STX $68af
9852: 8e b0 68     STX $68b0
9855: ac e4 6a     LDY $6ae4
9858: 8c b1 68     STY $68b1
985b: 8c b2 68     STY $68b2
985e: a9 00        LDA #$00
9860: 8d b5 68     STA $68b5
9863: a9 03        LDA #$03
9865: 8d b3 68     STA $68b3
9868: a9 f0        LDA #$f0
986a: 8d b4 68     STA $68b4
986d: 20 98 99     JSR $9998
9870: 20 98 99     JSR $9998
9873: a9 04        LDA #$04
9875: 8d b5 68     STA $68b5
9878: a9 00        LDA #$00
987a: 20 10 99     JSR $9910
987d: a9 0a        LDA #$0a
987f: 8d b5 68     STA $68b5
9882: a9 01        LDA #$01
9884: 20 10 99     JSR $9910
9887: a9 10        LDA #$10
9889: 8d b5 68     STA $68b5
988c: a9 02        LDA #$02
988e: 20 10 99     JSR $9910
9891: a9 16        LDA #$16
9893: 8d b5 68     STA $68b5
9896: a9 03        LDA #$03
9898: 20 10 99     JSR $9910
989b: ad d1 6a     LDA $6ad1
989e: 29 20        AND #$20
98a0: f0 2f        BEQ +$2f  [$98d1]
98a2: a9 00        LDA #$00
98a4: 8d b5 68     STA $68b5
98a7: ad e5 6a     LDA $6ae5
98aa: 8d af 68     STA $68af
98ad: 8d b0 68     STA $68b0
98b0: ad e6 6a     LDA $6ae6
98b3: 8d b1 68     STA $68b1
98b6: 8d b2 68     STA $68b2
98b9: ae e8 6a     LDX $6ae8
98bc: 20 e5 99     JSR $99e5
98bf: 20 e5 99     JSR $99e5
98c2: ad ed 6a     LDA $6aed
98c5: f0 0a        BEQ +$0a  [$98d1]
98c7: a9 ff        LDA #$ff
98c9: 8d 08 02     STA $0208
98cc: a9 00        LDA #$00
98ce: 8d ed 6a     STA $6aed
98d1: ad d1 6a     LDA $6ad1
98d4: 29 40        AND #$40
98d6: f0 2c        BEQ +$2c  [$9904]
98d8: 20 51 a0     JSR $a051
98db: a9 00        LDA #$00
98dd: 8d b5 68     STA $68b5
98e0: ad e5 6a     LDA $6ae5
98e3: 8d b0 68     STA $68b0
98e6: ad e6 6a     LDA $6ae6
98e9: 8d b1 68     STA $68b1
98ec: 8d b2 68     STA $68b2
98ef: a9 02        LDA #$02
98f1: 8d b3 68     STA $68b3
98f4: ad e7 6a     LDA $6ae7
98f7: 18           CLC
98f8: 6d e8 6a     ADC $6ae8
98fb: 8d b4 68     STA $68b4
98fe: 20 98 99     JSR $9998
9901: 20 98 99     JSR $9998
9904: 20 99 97     JSR $9799
9907: ad d1 6a     LDA $6ad1
990a: 29 0f        AND #$0f
990c: 8d d1 6a     STA $6ad1
990f: 60           RTS

9910: 48           PHA
9911: a8           TAY
9912: b9 a8 6b     LDA $6ba8,Y
9915: 8d b3 68     STA $68b3
9918: 68           PLA
9919: aa           TAX
991a: 0a           ASL
991b: 0a           ASL
991c: a8           TAY
991d: b9 d3 6a     LDA $6ad3,Y
9920: 8d af 68     STA $68af
9923: 8d b0 68     STA $68b0
9926: b9 d4 6a     LDA $6ad4,Y
9929: 8d b1 68     STA $68b1
992c: 8d b2 68     STA $68b2
992f: e8           INX
9930: a9 01        LDA #$01
9932: 8d b6 68     STA $68b6
9935: 0e b6 68     ASL $68b6
9938: ca           DEX
9939: d0 fa        BNE +$fa  [$9935]
993b: 4e b6 68     LSR $68b6
993e: ad d1 6a     LDA $6ad1
9941: 29 0f        AND #$0f
9943: 2d b6 68     AND $68b6
9946: f0 20        BEQ +$20  [$9968]
9948: a9 1a        LDA #$1a
994a: 18           CLC
994b: 79 d5 6a     ADC $6ad5,Y
994e: 8d b4 68     STA $68b4
9951: a9 a8        LDA #$a8
9953: 8d af 68     STA $68af
9956: 8d b0 68     STA $68b0
9959: ad b1 68     LDA $68b1
995c: 18           CLC
995d: 69 08        ADC #$08
995f: 8d b1 68     STA $68b1
9962: 20 b4 99     JSR $99b4
9965: 4c b4 99     JMP $99b4
9968: ad d2 6a     LDA $6ad2
996b: 29 0f        AND #$0f
996d: 2d b6 68     AND $68b6
9970: f0 12        BEQ +$12  [$9984]
9972: a9 03        LDA #$03
9974: 8d b3 68     STA $68b3
9977: a9 18        LDA #$18
9979: 99 d6 6a     STA $6ad6,Y
997c: a9 b0        LDA #$b0
997e: 8d af 68     STA $68af
9981: 8d b0 68     STA $68b0
9984: be d6 6a     LDX $6ad6,Y
9987: 20 8d 99     JSR $998d
998a: 20 8d 99     JSR $998d
998d: b9 d5 6a     LDA $6ad5,Y
9990: 18           CLC
9991: 7d 0c a0     ADC $a00c,X
9994: 8d b4 68     STA $68b4
9997: e8           INX
9998: ad b0 68     LDA $68b0
999b: 8d af 68     STA $68af
999e: 20 e9 97     JSR $97e9
99a1: 20 d3 99     JSR $99d3
99a4: ee b5 68     INC $68b5
99a7: ee b4 68     INC $68b4
99aa: ad b1 68     LDA $68b1
99ad: 18           CLC
99ae: 69 08        ADC #$08
99b0: 8d b1 68     STA $68b1
99b3: 60           RTS

99b4: ad b0 68     LDA $68b0
99b7: 8d af 68     STA $68af
99ba: 20 e9 97     JSR $97e9
99bd: 20 d3 99     JSR $99d3
99c0: 20 d3 99     JSR $99d3
99c3: ee b5 68     INC $68b5
99c6: ee b4 68     INC $68b4
99c9: ad b1 68     LDA $68b1
99cc: 18           CLC
99cd: 69 08        ADC #$08
99cf: 8d b1 68     STA $68b1
99d2: 60           RTS
99d3: ee b5 68     INC $68b5
99d6: ee b4 68     INC $68b4
99d9: ad af 68     LDA $68af
99dc: 18           CLC
99dd: 69 08        ADC #$08
99df: 8d af 68     STA $68af
99e2: 4c e9 97     JMP $97e9
99e5: ad b0 68     LDA $68b0
99e8: 8d af 68     STA $68af
99eb: ad e7 6a     LDA $6ae7
99ee: 18           CLC
99ef: 7d 2c a0     ADC $a02c,X
99f2: 8d b4 68     STA $68b4
99f5: bd 30 a0     LDA $a030,X
99f8: 8d b3 68     STA $68b3
99fb: 20 e9 97     JSR $97e9
99fe: ee b5 68     INC $68b5
9a01: e8           INX
9a02: ad af 68     LDA $68af
9a05: 18           CLC
9a06: 69 08        ADC #$08
9a08: 8d af 68     STA $68af
9a0b: ad e7 6a     LDA $6ae7
9a0e: 18           CLC
9a0f: 7d 2c a0     ADC $a02c,X
9a12: 8d b4 68     STA $68b4
9a15: bd 30 a0     LDA $a030,X
9a18: 8d b3 68     STA $68b3
9a1b: 20 e9 97     JSR $97e9
9a1e: ad b1 68     LDA $68b1
9a21: 18           CLC
9a22: 69 08        ADC #$08
9a24: 8d b1 68     STA $68b1
9a27: e8           INX
9a28: ee b5 68     INC $68b5
9a2b: 60           RTS
9a2c: a0 10        LDY #$10
9a2e: b9 74 9f     LDA $9f74,Y
9a31: 99 ab 6a     STA $6aab,Y
9a34: 88           DEY
9a35: d0 f7        BNE +$f7  [$9a2e]
9a37: 4c 0e 9d     JMP $9d0e
9a3a: 8d f9 6a     STA $6af9
9a3d: a0 10        LDY #$10
9a3f: b9 84 9f     LDA $9f84,Y
9a42: 99 ab 6a     STA $6aab,Y
9a45: 88           DEY
9a46: d0 f7        BNE +$f7  [$9a3f]
9a48: a9 08        LDA #$08
9a4a: 8d b4 68     STA $68b4
9a4d: ad d1 6a     LDA $6ad1
9a50: 29 01        AND #$01
9a52: f0 05        BEQ +$05  [$9a59]
9a54: a9 00        LDA #$00
9a56: 20 8b 9a     JSR $9a8b
9a59: ad d1 6a     LDA $6ad1
9a5c: 29 02        AND #$02
9a5e: f0 05        BEQ +$05  [$9a65]
9a60: a9 01        LDA #$01
9a62: 20 8b 9a     JSR $9a8b
9a65: ad d1 6a     LDA $6ad1
9a68: 29 04        AND #$04
9a6a: f0 05        BEQ +$05  [$9a71]
9a6c: a9 02        LDA #$02
9a6e: 20 8b 9a     JSR $9a8b
9a71: ad d1 6a     LDA $6ad1
9a74: 29 08        AND #$08
9a76: f0 05        BEQ +$05  [$9a7d]
9a78: a9 03        LDA #$03
9a7a: 20 8b 9a     JSR $9a8b
9a7d: 20 83 9a     JSR $9a83
9a80: 4c 0e 9d     JMP $9d0e
9a83: a9 10        LDA #$10
9a85: 8d b4 68     STA $68b4
9a88: ad f9 6a     LDA $6af9
9a8b: 8d b3 68     STA $68b3
9a8e: ee b3 68     INC $68b3
9a91: ad b3 68     LDA $68b3
9a94: 0a           ASL
9a95: a8           TAY
9a96: b9 aa 6a     LDA $6aaa,Y
9a99: 38           SEC
9a9a: ed b4 68     SBC $68b4
9a9d: 99 aa 6a     STA $6aaa,Y
9aa0: 99 b2 6a     STA $6ab2,Y
9aa3: 60           RTS

9aa4: ad d1 6a     LDA $6ad1
9aa7: 09 10        ORA #$10
9aa9: 8d d1 6a     STA $6ad1
9aac: a9 00        LDA #$00
9aae: 8d aa 6a     STA $6aaa
9ab1: a2 00        LDX #$00
9ab3: ad 92 6c     LDA $6c92
9ab6: 0a           ASL
9ab7: a8           TAY
9ab8: b9 c5 9a     LDA $9ac5,Y
9abb: 85 88        STA $88
9abd: b9 c6 9a     LDA $9ac6,Y
9ac0: 85 89        STA $89
9ac2: 6c 88 00     JMP ($0088)

9ac5: da 9a        .DW $9ada
9ac7: 04 9b        .DW $9b04
9ac9: 2e 9b        .DW $9b2e
9acb: cf 9a        .DW $9acf
9acd: cf 9a        .DW $9acf

9acf: 20 b2 97     JSR $97b2   ; Clear 1st 4 sprites (cursor?)
9ad2: 20 99 97     JSR $9799
9ad5: a0 00        LDY #$00
9ad7: a9 01        LDA #$01
9ad9: 60           RTS

9ada: a2 00        LDX #$00
9adc: bc f7 9f     LDY $9ff7,X
9adf: b9 b7 6b     LDA $6bb7,Y   ; monster type in this slot
9ae2: c9 ff        CMP #$ff
9ae4: f0 01        BEQ +$01  [$9ae7]
9ae6: 98           TYA
9ae7: 9d ef 6a     STA $6aef,X
9aea: e8           INX
9aeb: e0 09        CPX #$09
9aed: d0 ed        BNE +$ed  [$9adc]
9aef: a0 00        LDY #$00
9af1: b9 95 9f     LDA $9f95,Y
9af4: 99 ac 6a     STA $6aac,Y
9af7: c8           INY
9af8: c0 12        CPY #$12
9afa: d0 f5        BNE +$f5  [$9af1]
9afc: a9 08        LDA #$08
9afe: 8d ab 6a     STA $6aab
9b01: 4c 55 9b     JMP $9b55

9b04: a2 00        LDX #$00
9b06: bc 00 a0     LDY $a000,X
9b09: b9 b7 6b     LDA $6bb7,Y   ; monster type in this slot
9b0c: c9 ff        CMP #$ff
9b0e: f0 01        BEQ +$01  [$9b11]
9b10: 98           TYA
9b11: 9d ef 6a     STA $6aef,X
9b14: e8           INX
9b15: e0 09        CPX #$09
9b17: d0 ed        BNE +$ed  [$9b06]
9b19: a0 00        LDY #$00
9b1b: b9 a7 9f     LDA $9fa7,Y
9b1e: 99 ac 6a     STA $6aac,Y
9b21: c8           INY
9b22: c0 12        CPY #$12
9b24: d0 f5        BNE +$f5  [$9b1b]
9b26: a9 03        LDA #$03
9b28: 8d ab 6a     STA $6aab
9b2b: 4c 55 9b     JMP $9b55

9b2e: a2 00        LDX #$00
9b30: bc 04 a0     LDY $a004,X
9b33: b9 b7 6b     LDA $6bb7,Y   ; monster type in this slot
9b36: c9 ff        CMP #$ff
9b38: f0 01        BEQ +$01  [$9b3b]
9b3a: 98           TYA
9b3b: 9d ef 6a     STA $6aef,X
9b3e: e8           INX
9b3f: e0 09        CPX #$09
9b41: d0 ed        BNE +$ed  [$9b30]
9b43: a0 00        LDY #$00
9b45: b9 af 9f     LDA $9faf,Y
9b48: 99 ac 6a     STA $6aac,Y
9b4b: c8           INY
9b4c: c0 12        CPY #$12
9b4e: d0 f5        BNE +$f5  [$9b45]
9b50: a9 07        LDA #$07
9b52: 8d ab 6a     STA $6aab
9b55: 20 cb 9b     JSR $9bcb
9b58: ad d1 6a     LDA $6ad1
9b5b: 09 10        ORA #$10
9b5d: 8d d1 6a     STA $6ad1
9b60: ad aa 6a     LDA $6aaa
9b63: 0a           ASL
9b64: a8           TAY
9b65: b9 ac 6a     LDA $6aac,Y
9b68: 8d e3 6a     STA $6ae3
9b6b: b9 ad 6a     LDA $6aad,Y
9b6e: 8d e4 6a     STA $6ae4
9b71: 20 0c 98     JSR $980c
9b74: 20 c7 97     JSR $97c7
9b77: cd a6 6a     CMP $6aa6
9b7a: d0 0d        BNE +$0d  [$9b89]
9b7c: 20 4d 9f     JSR $9f4d
9b7f: f0 d7        BEQ +$d7  [$9b58]
9b81: a9 03        LDA #$03
9b83: 8d a7 6a     STA $6aa7
9b86: 4c 8e 9b     JMP $9b8e
9b89: a9 05        LDA #$05
9b8b: 8d a7 6a     STA $6aa7
9b8e: ad b3 68     LDA $68b3
9b91: 8d a6 6a     STA $6aa6
9b94: ad b3 68     LDA $68b3
9b97: 29 03        AND #$03
9b99: f0 0c        BEQ +$0c  [$9ba7]
9b9b: 48           PHA
9b9c: 20 b2 97     JSR $97b2   ; Clear 1st 4 sprites (cursor?)
9b9f: 20 99 97     JSR $9799
9ba2: ac 7b 6b     LDY $6b7b
9ba5: 68           PLA
9ba6: 60           RTS
9ba7: 20 ad 9b     JSR $9bad
9baa: 4c 58 9b     JMP $9b58
9bad: ad b3 68     LDA $68b3
9bb0: 29 f0        AND #$f0
9bb2: c9 20        CMP #$20
9bb4: f0 05        BEQ +$05  [$9bbb]
9bb6: c9 10        CMP #$10
9bb8: f0 1f        BEQ +$1f  [$9bd9]
9bba: 60           RTS
9bbb: ad aa 6a     LDA $6aaa
9bbe: cd ab 6a     CMP $6aab
9bc1: d0 05        BNE +$05  [$9bc8]
9bc3: a9 ff        LDA #$ff
9bc5: 8d aa 6a     STA $6aaa
9bc8: ee aa 6a     INC $6aaa
9bcb: ac aa 6a     LDY $6aaa
9bce: b9 ef 6a     LDA $6aef,Y
9bd1: c9 ff        CMP #$ff
9bd3: f0 e6        BEQ +$e6  [$9bbb]
9bd5: 8d 7b 6b     STA $6b7b
9bd8: 60           RTS
9bd9: ad aa 6a     LDA $6aaa
9bdc: d0 09        BNE +$09  [$9be7]
9bde: ad ab 6a     LDA $6aab
9be1: 8d aa 6a     STA $6aaa
9be4: ee aa 6a     INC $6aaa
9be7: ce aa 6a     DEC $6aaa
9bea: ac aa 6a     LDY $6aaa
9bed: b9 ef 6a     LDA $6aef,Y
9bf0: c9 ff        CMP #$ff
9bf2: f0 e5        BEQ +$e5  [$9bd9]
9bf4: 8d 7b 6b     STA $6b7b
9bf7: 60           RTS

9bf8: a0 10        LDY #$10
9bfa: b9 d6 9f     LDA $9fd6,Y
9bfd: 99 ab 6a     STA $6aab,Y
9c00: 88           DEY
9c01: d0 f7        BNE +$f7  [$9bfa]
9c03: 4c 0e 9d     JMP $9d0e
9c06: a0 10        LDY #$10
9c08: b9 e6 9f     LDA $9fe6,Y
9c0b: 99 ab 6a     STA $6aab,Y
9c0e: 88           DEY
9c0f: d0 f7        BNE +$f7  [$9c08]
9c11: 4c 0e 9d     JMP $9d0e

9c14: 8d f9 6a     STA $6af9
9c17: a9 00        LDA #$00
9c19: 8d f8 6a     STA $6af8
9c1c: 20 1b f2     JSR $f21b
9c1f: 4c 22 9c     JMP $9c22

9c22: a9 00        LDA #$00
9c24: 8d aa 6a     STA $6aaa
9c27: 8d ab 6a     STA $6aab
9c2a: ad d1 6a     LDA $6ad1
9c2d: 09 10        ORA #$10
9c2f: 8d d1 6a     STA $6ad1
9c32: ad ab 6a     LDA $6aab
9c35: 29 03        AND #$03
9c37: 0a           ASL
9c38: 8d b4 68     STA $68b4
9c3b: ad aa 6a     LDA $6aaa
9c3e: 0a           ASL
9c3f: 0a           ASL
9c40: 0a           ASL
9c41: 18           CLC
9c42: 6d b4 68     ADC $68b4
9c45: a8           TAY
9c46: b9 bf 9f     LDA $9fbf,Y
9c49: 8d e3 6a     STA $6ae3
9c4c: b9 c0 9f     LDA $9fc0,Y
9c4f: 8d e4 6a     STA $6ae4
9c52: 20 0c 98     JSR $980c
9c55: 20 c7 97     JSR $97c7
9c58: cd a6 6a     CMP $6aa6
9c5b: d0 0d        BNE +$0d  [$9c6a]
9c5d: 20 4d 9f     JSR $9f4d
9c60: f0 c8        BEQ +$c8  [$9c2a]
9c62: a9 03        LDA #$03
9c64: 8d a7 6a     STA $6aa7
9c67: 4c 6f 9c     JMP $9c6f
9c6a: a9 05        LDA #$05
9c6c: 8d a7 6a     STA $6aa7
9c6f: ad b3 68     LDA $68b3
9c72: 8d a6 6a     STA $6aa6
9c75: ad b3 68     LDA $68b3
9c78: 29 03        AND #$03
9c7a: f0 1c        BEQ +$1c  [$9c98]
9c7c: 48           PHA
9c7d: ad ab 6a     LDA $6aab
9c80: 29 03        AND #$03
9c82: 8d ab 6a     STA $6aab
9c85: ad aa 6a     LDA $6aaa
9c88: 29 03        AND #$03
9c8a: 8d aa 6a     STA $6aaa
9c8d: 20 b2 97     JSR $97b2   ; Clear 1st 4 sprites (cursor?)
9c90: 20 99 97     JSR $9799
9c93: ac ab 6a     LDY $6aab
9c96: 68           PLA
9c97: 60           RTS
9c98: 20 9e 9c     JSR $9c9e
9c9b: 4c 2a 9c     JMP $9c2a
9c9e: ad b3 68     LDA $68b3
9ca1: 29 f0        AND #$f0
9ca3: c9 80        CMP #$80
9ca5: f0 57        BEQ +$57  [$9cfe]
9ca7: c9 40        CMP #$40
9ca9: f0 45        BEQ +$45  [$9cf0]
9cab: c9 20        CMP #$20
9cad: f0 05        BEQ +$05  [$9cb4]
9caf: c9 10        CMP #$10
9cb1: f0 1f        BEQ +$1f  [$9cd2]
9cb3: 60           RTS
9cb4: ad ab 6a     LDA $6aab
9cb7: 29 03        AND #$03
9cb9: c9 03        CMP #$03
9cbb: d0 11        BNE +$11  [$9cce]
9cbd: ad f8 6a     LDA $6af8
9cc0: f0 01        BEQ +$01  [$9cc3]
9cc2: 60           RTS
9cc3: ee f8 6a     INC $6af8
9cc6: a9 01        LDA #$01
9cc8: 20 0f f2     JSR $f20f
9ccb: 20 1b f2     JSR $f21b
9cce: ee ab 6a     INC $6aab
9cd1: 60           RTS
9cd2: ad ab 6a     LDA $6aab
9cd5: 29 03        AND #$03
9cd7: d0 13        BNE +$13  [$9cec]
9cd9: ad f8 6a     LDA $6af8
9cdc: c9 01        CMP #$01
9cde: f0 01        BEQ +$01  [$9ce1]
9ce0: 60           RTS
9ce1: ce f8 6a     DEC $6af8
9ce4: a9 01        LDA #$01
9ce6: 20 0f f2     JSR $f20f
9ce9: 20 1b f2     JSR $f21b
9cec: ce ab 6a     DEC $6aab
9cef: 60           RTS
9cf0: ad aa 6a     LDA $6aaa
9cf3: d0 05        BNE +$05  [$9cfa]
9cf5: a9 03        LDA #$03
9cf7: 8d aa 6a     STA $6aaa
9cfa: ce aa 6a     DEC $6aaa
9cfd: 60           RTS
9cfe: ad aa 6a     LDA $6aaa
9d01: c9 02        CMP #$02
9d03: d0 05        BNE +$05  [$9d0a]
9d05: a9 ff        LDA #$ff
9d07: 8d aa 6a     STA $6aaa
9d0a: ee aa 6a     INC $6aaa
9d0d: 60           RTS
9d0e: a9 00        LDA #$00
9d10: 8d aa 6a     STA $6aaa
9d13: 8d ab 6a     STA $6aab
9d16: ad d1 6a     LDA $6ad1
9d19: 09 10        ORA #$10
9d1b: 8d d1 6a     STA $6ad1
9d1e: ad ab 6a     LDA $6aab
9d21: 29 03        AND #$03
9d23: 0a           ASL
9d24: 8d b4 68     STA $68b4
9d27: ad aa 6a     LDA $6aaa
9d2a: 29 01        AND #$01
9d2c: 0a           ASL
9d2d: 0a           ASL
9d2e: 0a           ASL
9d2f: 18           CLC
9d30: 6d b4 68     ADC $68b4
9d33: a8           TAY
9d34: b9 ac 6a     LDA $6aac,Y
9d37: 8d e3 6a     STA $6ae3
9d3a: b9 ad 6a     LDA $6aad,Y
9d3d: 8d e4 6a     STA $6ae4
9d40: 20 0c 98     JSR $980c
9d43: 20 c7 97     JSR $97c7
9d46: cd a6 6a     CMP $6aa6
9d49: d0 0d        BNE +$0d  [$9d58]
9d4b: 20 4d 9f     JSR $9f4d
9d4e: f0 c6        BEQ +$c6  [$9d16]
9d50: a9 03        LDA #$03
9d52: 8d a7 6a     STA $6aa7
9d55: 4c 5d 9d     JMP $9d5d
9d58: a9 05        LDA #$05
9d5a: 8d a7 6a     STA $6aa7
9d5d: ad b3 68     LDA $68b3
9d60: 8d a6 6a     STA $6aa6
9d63: ad b3 68     LDA $68b3
9d66: 29 03        AND #$03
9d68: f0 1c        BEQ +$1c  [$9d86]
9d6a: 48           PHA
9d6b: ad ab 6a     LDA $6aab
9d6e: 29 03        AND #$03
9d70: 8d ab 6a     STA $6aab
9d73: ad aa 6a     LDA $6aaa
9d76: 29 01        AND #$01
9d78: 8d aa 6a     STA $6aaa
9d7b: 20 b2 97     JSR $97b2   ; Clear 1st 4 sprites (cursor?)
9d7e: 20 99 97     JSR $9799
9d81: ac ab 6a     LDY $6aab
9d84: 68           PLA
9d85: 60           RTS
9d86: 20 8c 9d     JSR $9d8c
9d89: 4c 16 9d     JMP $9d16
9d8c: ad b3 68     LDA $68b3
9d8f: 29 f0        AND #$f0
9d91: c9 80        CMP #$80
9d93: f0 19        BEQ +$19  [$9dae]
9d95: c9 40        CMP #$40
9d97: f0 11        BEQ +$11  [$9daa]
9d99: c9 20        CMP #$20
9d9b: f0 05        BEQ +$05  [$9da2]
9d9d: c9 10        CMP #$10
9d9f: f0 05        BEQ +$05  [$9da6]
9da1: 60           RTS
9da2: ee ab 6a     INC $6aab
9da5: 60           RTS
9da6: ce ab 6a     DEC $6aab
9da9: 60           RTS
9daa: ce aa 6a     DEC $6aaa
9dad: 60           RTS
9dae: ee aa 6a     INC $6aaa
9db1: 60           RTS

; Player A: Dead -> 0HP, and set crouch/not crouch
9db2: 0a           ASL
9db3: 0a           ASL
9db4: aa           TAX
9db5: 0a           ASL
9db6: 0a           ASL
9db7: 0a           ASL
9db8: 0a           ASL
9db9: a8           TAY
9dba: b9 01 61     LDA $6101,Y   ; If player dead, zero the current HP
9dbd: 29 01        AND #$01
9dbf: f0 08        BEQ +$08  [$9dc9]
9dc1: a9 00        LDA #$00
9dc3: 99 0a 61     STA $610a,Y
9dc6: 99 0b 61     STA $610b,Y
9dc9: b9 01 61     LDA $6101,Y   ; If player poison/stop/sleep, set crouch?
9dcc: 29 34        AND #$34
9dce: f0 06        BEQ +$06  [$9dd6]
9dd0: a9 18        LDA #$18
9dd2: 9d d6 6a     STA $6ad6,X
9dd5: 60           RTS
9dd6: b9 0c 61     LDA $610c,Y   ; If HP < MaxHP/4, set crouch?
9dd9: 8d b3 68     STA $68b3
9ddc: b9 0d 61     LDA $610d,Y
9ddf: 8d b4 68     STA $68b4
9de2: 4e b4 68     LSR $68b4
9de5: 6e b3 68     ROR $68b3
9de8: 4e b4 68     LSR $68b4
9deb: 6e b3 68     ROR $68b3
9dee: b9 0b 61     LDA $610b,Y
9df1: d0 08        BNE +$08  [$9dfb]
9df3: b9 0a 61     LDA $610a,Y
9df6: cd b3 68     CMP $68b3
9df9: 90 d5        BCC +$d5  [$9dd0]
9dfb: a9 00        LDA #$00      ; otherwise, set no crouch?
9dfd: 9d d6 6a     STA $6ad6,X
9e00: 60           RTS

9e01: 48           PHA
9e02: a9 fe        LDA #$fe
9e04: d0 03        BNE +$03  [$9e09]
9e06: 48           PHA
9e07: a9 02        LDA #$02
9e09: 8d ab 68     STA $68ab
9e0c: 68           PLA
9e0d: 8d a9 6a     STA $6aa9
9e10: 20 1c 9e     JSR $9e1c
9e13: ad a9 6a     LDA $6aa9
9e16: 20 b2 9d     JSR $9db2   ; Player A: Dead -> 0HP, and set crouch/not crouch
9e19: 4c cb 9e     JMP $9ecb

9e1c: a9 08        LDA #$08
9e1e: 8d a8 6a     STA $6aa8
9e21: ad a9 6a     LDA $6aa9
9e24: 0a           ASL
9e25: 0a           ASL
9e26: aa           TAX
9e27: ad a8 6a     LDA $6aa8
9e2a: 29 02        AND #$02
9e2c: 0a           ASL
9e2d: 9d d6 6a     STA $6ad6,X
9e30: bd d3 6a     LDA $6ad3,X
9e33: 18           CLC
9e34: 6d ab 68     ADC $68ab
9e37: 9d d3 6a     STA $6ad3,X
9e3a: 20 cb 9e     JSR $9ecb
9e3d: ce a8 6a     DEC $6aa8
9e40: d0 df        BNE +$df  [$9e21]
9e42: 60           RTS

9e43: a9 53        LDA #$53
9e45: 8d 4b 00     STA $004b
9e48: 8d a7 6b     STA $6ba7
9e4b: a9 40        LDA #$40
9e4d: 8d a8 6a     STA $6aa8
9e50: ad a8 6a     LDA $6aa8
9e53: 29 08        AND #$08
9e55: 0a           ASL
9e56: 8d d6 6a     STA $6ad6
9e59: 8d da 6a     STA $6ada
9e5c: 8d de 6a     STA $6ade
9e5f: 8d e2 6a     STA $6ae2
9e62: 20 cb 9e     JSR $9ecb
9e65: ce a8 6a     DEC $6aa8
9e68: d0 e6        BNE +$e6  [$9e50]
9e6a: 20 76 97     JSR $9776   ; set player postures
9e6d: 4c cb 9e     JMP $9ecb

; set GFX and do animation?
9e70: 8d a9 6a     STA $6aa9
9e73: 8e e9 6a     STX $6ae9
9e76: 8c ea 6a     STY $6aea
9e79: a9 fe        LDA #$fe
9e7b: 8d ab 68     STA $68ab
9e7e: 20 1c 9e     JSR $9e1c
9e81: a9 08        LDA #$08
9e83: 8d a8 6a     STA $6aa8
9e86: ad d1 6a     LDA $6ad1
9e89: 09 20        ORA #$20
9e8b: 8d d1 6a     STA $6ad1
9e8e: ad a8 6a     LDA $6aa8
9e91: 29 02        AND #$02
9e93: f0 06        BEQ +$06  [$9e9b]
9e95: 20 d1 9e     JSR $9ed1
9e98: 4c 9e 9e     JMP $9e9e
9e9b: 20 15 9f     JSR $9f15
9e9e: 20 cb 9e     JSR $9ecb
9ea1: ce a8 6a     DEC $6aa8
9ea4: d0 e0        BNE +$e0  [$9e86]
9ea6: 20 b2 97     JSR $97b2   ; Clear 1st 4 sprites (cursor?)
9ea9: 20 99 97     JSR $9799
9eac: ad a9 6a     LDA $6aa9
9eaf: 0a           ASL
9eb0: 0a           ASL
9eb1: aa           TAX
9eb2: a9 00        LDA #$00
9eb4: 9d d6 6a     STA $6ad6,X
9eb7: 20 cb 9e     JSR $9ecb
9eba: a9 02        LDA #$02
9ebc: 8d ab 68     STA $68ab
9ebf: 20 1c 9e     JSR $9e1c
9ec2: ad a9 6a     LDA $6aa9
9ec5: 20 b2 9d     JSR $9db2   ; Player A: Dead -> 0HP, and set crouch/not crouch
9ec8: 20 b2 97     JSR $97b2   ; Clear 1st 4 sprites (cursor?)
9ecb: 20 0c 98     JSR $980c
9ece: 4c 99 97     JMP $9799
9ed1: ad ea 6a     LDA $6aea
9ed4: f0 19        BEQ +$19  [$9eef]
9ed6: 20 ef 9e     JSR $9eef
9ed9: a9 10        LDA #$10
9edb: 9d d6 6a     STA $6ad6,X
9ede: ad e9 6a     LDA $6ae9
9ee1: 8d e7 6a     STA $6ae7
9ee4: ad d1 6a     LDA $6ad1
9ee7: 09 40        ORA #$40
9ee9: 29 df        AND #$df
9eeb: 8d d1 6a     STA $6ad1
9eee: 60           RTS
9eef: ad a9 6a     LDA $6aa9
9ef2: 0a           ASL
9ef3: 0a           ASL
9ef4: aa           TAX
9ef5: a9 0c        LDA #$0c
9ef7: 9d d6 6a     STA $6ad6,X
9efa: bd d3 6a     LDA $6ad3,X
9efd: 38           SEC
9efe: e9 10        SBC #$10
9f00: 8d e5 6a     STA $6ae5
9f03: bd d4 6a     LDA $6ad4,X
9f06: 8d e6 6a     STA $6ae6
9f09: ad e9 6a     LDA $6ae9
9f0c: 8d e7 6a     STA $6ae7
9f0f: a9 00        LDA #$00
9f11: 8d e8 6a     STA $6ae8
9f14: 60           RTS
9f15: ad ea 6a     LDA $6aea
9f18: f0 09        BEQ +$09  [$9f23]
9f1a: 20 d6 9e     JSR $9ed6
9f1d: a9 04        LDA #$04
9f1f: 8d e8 6a     STA $6ae8
9f22: 60           RTS
9f23: ad a9 6a     LDA $6aa9
9f26: 0a           ASL
9f27: 0a           ASL
9f28: aa           TAX
9f29: bd d3 6a     LDA $6ad3,X
9f2c: 18           CLC
9f2d: 69 08        ADC #$08
9f2f: 8d e5 6a     STA $6ae5
9f32: bd d4 6a     LDA $6ad4,X
9f35: 38           SEC
9f36: e9 08        SBC #$08
9f38: 8d e6 6a     STA $6ae6
9f3b: ad e9 6a     LDA $6ae9
9f3e: 8d e7 6a     STA $6ae7
9f41: a9 08        LDA #$08
9f43: 8d e8 6a     STA $6ae8
9f46: 9d d6 6a     STA $6ad6,X
9f49: ee ed 6a     INC $6aed
9f4c: 60           RTS
9f4d: ce a7 6a     DEC $6aa7
9f50: f0 03        BEQ +$03  [$9f55]
9f52: a9 00        LDA #$00
9f54: 60           RTS
9f55: a9 03        LDA #$03
9f57: 8d a7 6a     STA $6aa7
9f5a: a9 01        LDA #$01
9f5c: 60           RTS

; Player struct pointers
9f5d: 00 61        .DW $6100   ; Warrior #1 permanent struct
9f5f: 40 61        .DW $6140   ; Warrior #2 permanent struct
9f61: 80 61        .DW $6180   ; Warrior #3 permanent struct
9f63: c0 61        .DW $61c0   ; Warrior #4 permanent struct
9f65: 00 68        .DW $6800   ; Warrior #1 in-battle struct
9f67: 12 68        .DW $6812   ; Warrior #2 in-battle struct
9f69: 24 68        .DW $6824   ; Warrior #3 in-battle struct
9f6b: 36 68        .DW $6836   ; Warrior #4 in-battle struct
9f6d: 00 63        .DW $6300   ; Warrior #1 magic?
9f6f: 40 63        .DW $6340   ; Warrior #2 magic?
9f71: 80 63        .DW $6380   ; Warrior #3 magic?
9f73: c0 63        .DW $63c0   ; Warrior #4 magic?

; ??? data
9f75: 60 9e 60 ae  .DB $60, $9e, $60, $ae
9f79: 60 be 60 ce  .DB $60, $be, $60, $ce
9f7d: 90 9e 90 9e  .DB $90, $9e, $90, $9e
9f81: 90 9e 90 9e  .DB $90, $9e, $90, $9e

9f85: a0 34 a0 4c  .DB $a0, $34, $a0, $4c
9f89: a0 64 a0 7c  .DB $a0, $64, $a0, $7c
9f8d: a0 34 a0 4c  .DB $a0, $34, $a0, $4c
9f91: a0 64 a0 7c  .DB $a0, $64, $a0, $7c

9f95: 00 30 00 50  .DB $00, $30, $00, $50
9f99: 00 70 20 30  .DB $00, $70, $20, $30
9f9d: 20 50 20 70  .DB $20, $50, $20, $70
9fa1: 40 30 40 50  .DB $40, $30, $40, $50
9fa5: 40 70 00 30  .DB $40, $70, $00, $30
9fa9: 00 60 40 30  .DB $00, $60, $40, $30
9fad: 40 60 00 30  .DB $40, $60, $00, $30
9fb1: 00 60 30 30  .DB $00, $60, $30, $30
9fb5: 30 50 30 70  .DB $30, $50, $30, $70
9fb9: 50 30 50 50  .DB $50, $30, $50, $50
9fbd: 50 70        .DB $50, $70

9fbf: 20 a6        .DB $20, $a6
9fc1: 20 b6        .DB $20, $b6
9fc3: 20 c6        .DB $20, $c6
9fc5: 20 d6        .DB $20, $d6
9fc7: 48 a6        .DB $48, $a6
9fc9: 48 b6        .DB $48, $b6
9fcb: 48 c6        .DB $48, $c6
9fcd: 48 d6        .DB $48, $d6
9fcf: 70 a6        .DB $70, $a6
9fd1: 70 b6        .DB $70, $b6
9fd3: 70 c6        .DB $70, $c6
9fd5: 70 d6        .DB $70, $d6

9fd7: 10 a6 10 b6  .DB $10, $a6, $10, $b6
9fdb: 10 c6 10 d6  .DB $10, $c6, $10, $d6
9fdf: 58 a6 58 b6  .DB $58, $a6, $58, $b6
9fe3: 58 c6 58 d6  .DB $58, $c6, $58, $d6

9fe7: 18 a6 18 b6  .DB $18, $a6, $18, $b6
9feb: 18 a6 18 b6  .DB $18, $a6, $18, $b6
9fef: 18 a6 18 b6  .DB $18, $a6, $18, $b6
9ff3: 18 a6 18 b6  .DB $18, $a6, $18, $b6

;; Something to do with the order of monster slots?
; 9 small monsters
9ff7: 01 00 02 04  .DB $01, $00, $02, $04
9ffb: 03 05 07 06  .DB $03, $05, $07, $06
9fff: 08           .DB $08

; 4 big
a000: 00 01 02 03  .DB $00, $01, $02, $03

; 2 big, 6 small
a004: 00 01 03 02  .DB $00, $01, $03, $02
a008: 04 06 05 07  .DB $04, $06, $05, $07

; ???
a00c: 00 02 04 00  .DB $00, $02, $04, $00
a010: 00 02 06 00  .DB $00, $02, $06, $00
a014: 08 0a 0c 00  .DB $08, $0a, $0c, $00
a018: 00 02 06 00  .DB $00, $02, $06, $00
a01c: 0e 10 12 00  .DB $0e, $10, $12, $00
a020: 0e 10 12 00  .DB $0e, $10, $12, $00
a024: 14 16 18 00  .DB $14, $16, $18, $00
a028: 14 16 18 00  .DB $14, $16, $18, $00

a02c: 00 01 02 03  .DB $00, $01, $02, $03

a030: 02 02 02 02  .DB $02, $02, $02, $02

a034: 01 00 03 02  .DB $01, $00, $03, $02
a038: 42 42 42 42  .DB $42, $42, $42, $42

; Warrior palettes by class
a03c: 01 00 00 01  .DB $01, $00, $00, $01
a040: 01 00 01 01  .DB $01, $00, $01, $01
a044: 00 01 01 00  .DB $00, $01, $01, $00

; ???
a048: 97 b2 b7 ab  .DB $97, $b2, $b7, $ab
a04c: ac b1 aa 00  .DB $ac, $b1, $aa, $00
a050: 00           .DB $00

a051: ad a0 6b     LDA $6ba0
a054: c9 20        CMP #$20
a056: d0 02        BNE +$02  [$a05a]
a058: a9 10        LDA #$10
a05a: 85 89        STA $89
a05c: ad 44 6d     LDA $6d44
a05f: 8d 16 6d     STA $6d16
a062: 20 76 a0     JSR $a076
a065: a5 89        LDA $89
a067: 20 70 a0     JSR $a070
a06a: 20 76 a0     JSR $a076
a06d: ad 16 6d     LDA $6d16
a070: 8d 97 6b     STA $6b97
a073: 4c 50 ab     JMP $ab50   ; Wait for v-blank and upload palettes and do sound
a076: 20 00 fe     JSR $fe00   ; wait for V-blank
a079: 20 8a 97     JSR $978a   ; Enable screen
a07c: a9 0c        LDA #$0c
a07e: 8d 57 00     STA $0057
a081: ad 4b 00     LDA $004b
a084: 10 06        BPL +$06  [$a08c]
a086: ad a7 6b     LDA $6ba7
a089: 8d 4b 00     STA $004b
a08c: 20 09 c0     JSR $c009   ; Start music or play current notes
a08f: 4c 13 bf     JMP $bf13   ; some sound thing

a092: 29 03        AND #$03
a094: 18           CLC
a095: 69 04        ADC #$04
a097: a8           TAY
a098: a9 00        LDA #$00
a09a: aa           TAX
a09b: f0 05        BEQ +$05  [$a0a2]
a09d: aa           TAX
a09e: a9 04        LDA #$04
a0a0: a0 0f        LDY #$0f
a0a2: 8c b1 68     STY $68b1
a0a5: 48           PHA
a0a6: 0a           ASL
a0a7: a8           TAY
a0a8: b9 cd a0     LDA $a0cd,Y
a0ab: 85 88        STA $88
a0ad: b9 ce a0     LDA $a0ce,Y
a0b0: 85 89        STA $89
a0b2: a0 00        LDY #$00
a0b4: ad b1 68     LDA $68b1
a0b7: 91 88        STA ($88),Y
a0b9: c8           INY
a0ba: 8a           TXA
a0bb: 91 88        STA ($88),Y
a0bd: c8           INY
a0be: a9 00        LDA #$00
a0c0: 91 88        STA ($88),Y
a0c2: a6 88        LDX $88
a0c4: a4 89        LDY $89
a0c6: ee f8 6a     INC $6af8
a0c9: 68           PLA
a0ca: 4c 18 f2     JMP $f218

a0cd: fa 6a        .DW $6afa
a0cf: 0a 6b        .DW $6b0a
a0d1: 1a 6b        .DW $6b1a
a0d3: 2a 6b        .DW $6b2a
a0d5: 3a 6b        .DW $6b3a

a0d7: 20 e6 a0     JSR $a0e6  ; Respond rate delay
a0da: ad f8 6a     LDA $6af8
a0dd: 20 0f f2     JSR $f20f
a0e0: a9 00        LDA #$00
a0e2: 8d f8 6a     STA $6af8
a0e5: 60           RTS

; Respond rate delay
a0e6: ad ac 6b     LDA $6bac
a0e9: 8d d0 6a     STA $6ad0
a0ec: 20 00 fe     JSR $fe00   ; wait for V-blank
a0ef: 20 7c a0     JSR $a07c   ; some sound thing
a0f2: ce d0 6a     DEC $6ad0
a0f5: d0 f5        BNE +$f5  [$a0ec]
a0f7: 60           RTS

a0f8: 10 28        BPL +$28  [$a122]
a0fa: 40           RTI
a0fb: 58           CLI
a0fc: a8           TAY
a0fd: b9 f8 a0     LDA $a0f8,Y
a100: 8d aa 6a     STA $6aaa
a103: aa           TAX
a104: a0 00        LDY #$00
a106: bd 00 02     LDA $0200,X
a109: 99 ac 6a     STA $6aac,Y
a10c: e8           INX
a10d: c8           INY
a10e: c0 18        CPY #$18
a110: d0 f4        BNE +$f4  [$a106]
a112: a9 10        LDA #$10
a114: 8d ad 6b     STA $6bad
a117: ae aa 6a     LDX $6aaa
a11a: a0 00        LDY #$00
a11c: ad ad 6b     LDA $6bad
a11f: 29 02        AND #$02
a121: f0 0d        BEQ +$0d  [$a130]
a123: a9 f0        LDA #$f0
a125: 9d 00 02     STA $0200,X
a128: e8           INX
a129: c8           INY
a12a: c0 18        CPY #$18
a12c: d0 f5        BNE +$f5  [$a123]
a12e: f0 0c        BEQ +$0c  [$a13c]
a130: b9 ac 6a     LDA $6aac,Y
a133: 9d 00 02     STA $0200,X
a136: e8           INX
a137: c8           INY
a138: c0 18        CPY #$18
a13a: d0 f4        BNE +$f4  [$a130]
a13c: 20 99 97     JSR $9799
a13f: ce ad 6b     DEC $6bad
a142: d0 d3        BNE +$d3  [$a117]
a144: 60           RTS

; Set pointers for warrior A: p[$82]=permanent, p[$80]=in-battle
a145: 0a           ASL
a146: a8           TAY
a147: b9 65 9f     LDA $9f65,Y
a14a: 85 80        STA $80
a14c: b9 66 9f     LDA $9f66,Y
a14f: 85 81        STA $81
a151: b9 5d 9f     LDA $9f5d,Y
a154: 85 82        STA $82
a156: b9 5e 9f     LDA $9f5e,Y
a159: 85 83        STA $83
a15b: 60           RTS

; Data, shuffled in RAM for battle order
a15c: 00 01 02 03  .DB $00, $01, $02, $03
a160: 04 05 06 07  .DB $04, $05, $06, $07
a164: 08 80 81 82  .DB $08, $80, $81, $82
a168: 83           .DB $83

; Execute a round of battle
a169: a0 0d        LDY #$0d     ;;; determine battle order: take list above and
a16b: b9 5b a1     LDA $a15b,Y  ;;; do 17 random swaps.
a16e: 99 47 68     STA $6847,Y
a171: 88           DEY
a172: d0 f7        BNE +$f7  [$a16b]
a174: 8c f8 6a     STY $6af8
a177: 8c 86 6b     STY $6b86
a17a: a9 11        LDA #$11
a17c: 8d 8e 68     STA $688e
a17f: a9 00        LDA #$00
a181: a2 0c        LDX #$0c
a183: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
a186: 48           PHA
a187: a9 00        LDA #$00
a189: a2 0c        LDX #$0c
a18b: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
a18e: a8           TAY
a18f: 68           PLA
a190: aa           TAX
a191: b9 48 68     LDA $6848,Y
a194: 48           PHA
a195: bd 48 68     LDA $6848,X
a198: 99 48 68     STA $6848,Y
a19b: 68           PLA
a19c: 9d 48 68     STA $6848,X
a19f: ce 8e 68     DEC $688e
a1a2: d0 db        BNE +$db  [$a17f]
a1a4: ac 8e 68     LDY $688e     ;;; Perform attack for each combatant
a1a7: a9 00        LDA #$00
a1a9: 8d 89 68     STA $6889   ; target status
a1ac: b9 48 68     LDA $6848,Y
a1af: 30 0e        BMI +$0e  [$a1bf] ;;; is player? Process command
a1b1: a8           TAY               ;;; no, is it a live monster?
a1b2: b9 b7 6b     LDA $6bb7,Y
a1b5: c9 ff        CMP #$ff
a1b7: f0 0f        BEQ +$0f  [$a1c8] ;;; empty slot, skip it
a1b9: ad ae 6b     LDA $6bae         ;;; player strike first? skip monster
a1bc: d0 0a        BNE +$0a  [$a1c8]
a1be: 98           TYA
a1bf: 20 52 a3     JSR $a352  ; Perform a battle action
a1c2: 20 50 aa     JSR $aa50
a1c5: 20 db a1     JSR $a1db  ; Check if target dead, may not return here
a1c8: ee 8e 68     INC $688e  ;;; next...
a1cb: ad 8e 68     LDA $688e
a1ce: c9 0d        CMP #$0d
a1d0: d0 d2        BNE +$d2  [$a1a4]
a1d2: a9 00        LDA #$00
a1d4: 8d ae 6b     STA $6bae  ; clear strike first
a1d7: 20 a6 a2     JSR $a2a6  ; do post-round handling (e.g. poison)
a1da: 60           RTS

; Check if target dead
a1db: ad 89 68     LDA $6889   ; target status
a1de: 29 03        AND #$03
a1e0: f0 f8        BEQ +$f8  [$a1da]
a1e2: ad 87 68     LDA $6887   ; attacker type (0=player, 1=monster)
a1e5: d0 19        BNE +$19  [$a200]
a1e7: ac 85 68     LDY $6885   ; target index
a1ea: b9 b7 6b     LDA $6bb7,Y ; monster type in this slot
a1ed: c9 ff        CMP #$ff
a1ef: f0 1c        BEQ +$1c  [$a20d]
a1f1: a9 ff        LDA #$ff
a1f3: 99 b7 6b     STA $6bb7,Y ; monster type in this slot
a1f6: 98           TYA
a1f7: 8d 8a 6c     STA $6c8a
a1fa: 20 ee bb     JSR $bbee   ; do attack sparkles
a1fd: 4c 0d a2     JMP $a20d
a200: ad 85 68     LDA $6885   ; target index
a203: 29 03        AND #$03
a205: 0a           ASL
a206: 0a           ASL
a207: a8           TAY
a208: a9 00        LDA #$00
a20a: 99 8f 68     STA $688f,Y
a20d: ad d1 6a     LDA $6ad1   ; wiped out? set flag and return two levels
a210: 0d d2 6a     ORA $6ad2
a213: 29 0f        AND #$0f
a215: c9 0f        CMP #$0f
a217: d0 05        BNE +$05  [$a21e]
a219: ee 86 6b     INC $6b86
a21c: d0 11        BNE +$11  [$a22f]
a21e: a0 09        LDY #$09    ; won? set flag and return two levels
a220: b9 b6 6b     LDA $6bb6,Y
a223: c9 ff        CMP #$ff
a225: d0 0a        BNE +$0a  [$a231] ; nope, just return regular
a227: 88           DEY
a228: d0 f6        BNE +$f6  [$a220]
a22a: a9 02        LDA #$02
a22c: 8d 86 6b     STA $6b86
a22f: 68           PLA
a230: 68           PLA
a231: 60           RTS

; Handle regenerative monsters
; BUG: should also handle poison
;FIX { START enemy poison patch
;       replace this code with the contents of enemy-poison-bug.txt
a232: a9 00        LDA #$00
a234: 8d ad 6b     STA $6bad
a237: ad 93 6c     LDA $6c93
a23a: 8d af 68     STA $68af
a23d: ad ad 6b     LDA $6bad
a240: 20 86 bb     JSR $bb86   ; XA = address of in-RAM struct for slot A
a243: 85 88        STA $88     ; p[$88]=in-RAM for slot A
a245: 86 89        STX $89
a247: a0 00        LDY #$00    ; p[$8a]=in-ROM for slot A
a249: b1 88        LDA ($88),Y
a24b: 85 8a        STA $8a
a24d: c8           INY
a24e: b1 88        LDA ($88),Y
a250: 85 8b        STA $8b
a252: a0 10        LDY #$10    ; regenerative?
a254: b1 8a        LDA ($8a),Y
a256: 29 80        AND #$80
a258: f0 43        BEQ +$43  [$a29d]
a25a: a0 02        LDY #$02    ;; HP+=3, clamp to max
a25c: b1 88        LDA ($88),Y
a25e: 8d 56 68     STA $6856
a261: c8           INY
a262: b1 88        LDA ($88),Y
a264: 8d 57 68     STA $6857
a267: a9 00        LDA #$00
a269: a2 03        LDX #$03
a26b: 20 dd ae     JSR $aedd   ; w[A] = clamp(w[A] + X)
a26e: a0 04        LDY #$04
a270: b1 8a        LDA ($8a),Y
a272: 8d 58 68     STA $6858
a275: c8           INY
a276: b1 8a        LDA ($8a),Y
a278: 8d 59 68     STA $6859
a27b: a0 00        LDY #$00
a27d: a2 01        LDX #$01
a27f: 20 ea ad     JSR $adea   ; CMP w[Y] >= w[X] (sets NC, clear others)
a282: 90 0c        BCC +$0c  [$a290]
a284: ad 58 68     LDA $6858
a287: 8d 56 68     STA $6856
a28a: ad 59 68     LDA $6859
a28d: 8d 57 68     STA $6857
a290: a0 02        LDY #$02
a292: ad 56 68     LDA $6856
a295: 91 88        STA ($88),Y
a297: c8           INY
a298: ad 57 68     LDA $6857
a29b: 91 88        STA ($88),Y
a29d: ee ad 6b     INC $6bad
a2a0: ce af 68     DEC $68af
a2a3: d0 98        BNE +$98  [$a23d]
a2a5: 60           RTS
;FIX  END enemy poison patch }

; Post-round handling (e.g. poison)
a2a6: a9 00        LDA #$00
a2a8: 20 c3 a2     JSR $a2c3   ; Handle warrior poison
a2ab: a9 01        LDA #$01
a2ad: 20 c3 a2     JSR $a2c3   ; Handle warrior poison
a2b0: a9 02        LDA #$02
a2b2: 20 c3 a2     JSR $a2c3   ; Handle warrior poison
a2b5: a9 03        LDA #$03
a2b7: 20 c3 a2     JSR $a2c3   ; Handle warrior poison
a2ba: 20 50 aa     JSR $aa50
a2bd: 20 32 a2     JSR $a232   ; Handle regenerative monsters
a2c0: 4c 0d a2     JMP $a20d   ; Check for won/lost battle

; Handle warrior poison
a2c3: 8d 5a 68     STA $685a
a2c6: 0a           ASL
a2c7: 0a           ASL
a2c8: 0a           ASL
a2c9: 0a           ASL
a2ca: 0a           ASL
a2cb: 0a           ASL
a2cc: aa           TAX
a2cd: 8d ad 6b     STA $6bad
a2d0: bd 01 61     LDA $6101,X  ; poisoned?
a2d3: 29 04        AND #$04
a2d5: f0 55        BEQ +$55  [$a32c]
a2d7: bd 0a 61     LDA $610a,X  ; HP-=2
a2da: 8d 56 68     STA $6856
a2dd: bd 0b 61     LDA $610b,X
a2e0: 8d 57 68     STA $6857
a2e3: a9 00        LDA #$00
a2e5: a2 02        LDX #$02
a2e7: 20 0a af     JSR $af0a   ; w[A] = clamp(w[A] - X)
a2ea: ac 56 68     LDY $6856
a2ed: ae 57 68     LDX $6857
a2f0: 20 b2 a4     JSR $a4b2   ; Clamp XY to 0
a2f3: 8c 56 68     STY $6856
a2f6: 8e 57 68     STX $6857
a2f9: a9 00        LDA #$00
a2fb: 20 3c af     JSR $af3c   ; w[A]<=0 (sets flags NZ)
a2fe: d0 1d        BNE +$1d  [$a31d]
a300: a9 00        LDA #$00    ; dead from poison?
a302: 8d 56 68     STA $6856
a305: 8d 57 68     STA $6857
a308: ae ad 6b     LDX $6bad
a30b: a9 01        LDA #$01
a30d: 9d 01 61     STA $6101,X
a310: ad 5a 68     LDA $685a
a313: 29 03        AND #$03
a315: 0a           ASL
a316: 0a           ASL
a317: a8           TAY
a318: a9 00        LDA #$00
a31a: 99 8f 68     STA $688f,Y
a31d: ae ad 6b     LDX $6bad
a320: ad 56 68     LDA $6856
a323: 9d 0a 61     STA $610a,X
a326: ad 57 68     LDA $6857
a329: 9d 0b 61     STA $610b,X
a32c: 60           RTS

; load palette and do GFX?
a32d: 8e ee 6a     STX $6aee
a330: 48           PHA
a331: 0a           ASL
a332: a8           TAY
a333: be 7e 6b     LDX $6b7e,Y
a336: 8a           TXA
a337: 48           PHA
a338: 98           TYA
a339: 48           PHA
a33a: b9 7f 6b     LDA $6b7f,Y
a33d: a2 01        LDX #$01
a33f: 20 2f ab     JSR $ab2f   ; load palette?
a342: 68           PLA
a343: a8           TAY
a344: 68           PLA
a345: aa           TAX
a346: 68           PLA
a347: a0 01        LDY #$01
a349: 20 70 9e     JSR $9e70   ; set GFX and do animation?
a34c: a9 00        LDA #$00
a34e: 8d ee 6a     STA $6aee
a351: 60           RTS

; Perform a battle action
a352: 30 03        BMI +$03  [$a357]
a354: 4c 97 b1     JMP $b197
a357: 29 03        AND #$03  ;;; Player
a359: 85 88        STA $88
a35b: 0a           ASL
a35c: 0a           ASL
a35d: a8           TAY
a35e: b9 8f 68     LDA $688f,Y  ; player command
a361: 4a           LSR
a362: 4a           LSR
a363: 4a           LSR
a364: 90 08        BCC +$08  [$a36e]
a366: be 91 68     LDX $6891,Y  ; Attack!
a369: a5 88        LDA $88
a36b: 4c ba a4     JMP $a4ba
a36e: 4a           LSR
a36f: 90 17        BCC +$17  [$a388]
a371: 98           TYA          ; Drink!
a372: 48           PHA
a373: a4 88        LDY $88
a375: be a7 68     LDX $68a7,Y
a378: de 39 60     DEC $6039,X  ; use drink
a37b: 68           PLA
a37c: a8           TAY
a37d: b9 90 68     LDA $6890,Y
a380: be 91 68     LDX $6891,Y
a383: a4 88        LDY $88
a385: 4c bd b3     JMP $b3bd
a388: 4a           LSR
a389: 90 0b        BCC +$0b  [$a396]
a38b: b9 90 68     LDA $6890,Y  ; item?
a38e: be 91 68     LDX $6891,Y
a391: a4 88        LDY $88
a393: 4c b5 b3     JMP $b3b5
a396: 4a           LSR
a397: 90 05        BCC +$05  [$a39e]
a399: a5 88        LDA $88      ; run!
a39b: 4c d8 a3     JMP $a3d8
a39e: 4a           LSR
a39f: 90 17        BCC +$17  [$a3b8]
a3a1: 98           TYA          ; magic!
a3a2: 48           PHA
a3a3: a4 88        LDY $88
a3a5: be a7 68     LDX $68a7,Y
a3a8: de 20 63     DEC $6320,X  ; subtract a magic charge
a3ab: 68           PLA
a3ac: a8           TAY
a3ad: b9 90 68     LDA $6890,Y
a3b0: be 91 68     LDX $6891,Y
a3b3: a4 88        LDY $88
a3b5: 4c c5 b3     JMP $b3c5
a3b8: a5 88        LDA $88      ; try to cure stop/sleep
a3ba: 20 45 a1     JSR $a145   ; Warrior A structs: p[$82]=permanent, p[$80]=in-battle
a3bd: a0 01        LDY #$01     ; load status
a3bf: b1 82        LDA ($82),Y
a3c1: 85 89        STA $89
a3c3: 29 20        AND #$20
a3c5: f0 05        BEQ +$05  [$a3cc]
a3c7: a5 88        LDA $88  ; sleep
a3c9: 4c 2f a4     JMP $a42f
a3cc: a5 89        LDA $89
a3ce: 29 10        AND #$10
a3d0: f0 05        BEQ +$05  [$a3d7]
a3d2: a5 88        LDA $88  ; stop
a3d4: 4c 81 a4     JMP $a481
a3d7: 60           RTS

; RUN!
a3d8: 48           PHA
a3d9: 20 92 a0     JSR $a092
a3dc: 68           PLA
a3dd: 20 45 a1     JSR $a145   ; Warrior A structs: p[$82]=permanent, p[$80]=in-battle
a3e0: ad ae 6b     LDA $6bae   ; player strike first -> always run
a3e3: d0 3d        BNE +$3d  [$a422]
a3e5: ad 91 6d     LDA $6d91   ; can't run flag -> never run
a3e8: 29 01        AND #$01
a3ea: d0 31        BNE +$31  [$a41d]
a3ec: a0 26        LDY #$26    ; chance to run: Luck > (0..Level+15)
a3ee: b1 80        LDA ($80),Y ; BUG: wrong byte for running:
;FIX: b1 82        LDA ($82),Y   ; slot 1 = slot 3's status
a3f0: 18           CLC           ; slot 2 = slot 4's status
a3f1: 69 0f        ADC #$0f      ; slot 3 = who goes third?
a3f3: aa           TAX           ; slot 4 = IIRC, the one's digit of the bottom warrior's HP
a3f4: a9 00        LDA #$00
a3f6: 8d 59 68     STA $6859
a3f9: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
a3fc: aa           TAX
a3fd: a0 14        LDY #$14
a3ff: b1 82        LDA ($82),Y
a401: 8d 58 68     STA $6858
a404: a9 01        LDA #$01
a406: 20 0a af     JSR $af0a   ; w[A] = clamp(w[A] - X)
a409: ac 58 68     LDY $6858
a40c: ae 59 68     LDX $6859
a40f: 20 b2 a4     JSR $a4b2   ; Clamp XY to 0
a412: 8c 58 68     STY $6858
a415: 8e 59 68     STX $6859
a418: ad 58 68     LDA $6858
a41b: d0 05        BNE +$05  [$a422]
a41d: a9 24        LDA #$24 ; can't run
a41f: 4c 07 aa     JMP $aa07
a422: a9 26        LDA #$26 ; run!
a424: 20 07 aa     JSR $aa07
a427: a9 03        LDA #$03 ; set flag and return two levels
a429: 8d 86 6b     STA $6b86
a42c: 68           PLA
a42d: 68           PLA
a42e: 60           RTS

; wake player?
a42f: 48           PHA
a430: 20 92 a0     JSR $a092
a433: 68           PLA
a434: 20 45 a1     JSR $a145   ; Warrior A structs: p[$82]=permanent, p[$80]=in-battle
a437: a0 0c        LDY #$0c    ; Wake if (0..80)<MaxHP
a439: b1 82        LDA ($82),Y
a43b: 8d 56 68     STA $6856
a43e: c8           INY
a43f: b1 82        LDA ($82),Y
a441: 8d 57 68     STA $6857
a444: a9 00        LDA #$00
a446: a2 50        LDX #$50
a448: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
a44b: aa           TAX
a44c: a9 00        LDA #$00
a44e: 20 0a af     JSR $af0a   ; w[A] = clamp(w[A] - X)
a451: ac 56 68     LDY $6856
a454: ae 57 68     LDX $6857
a457: 20 b2 a4     JSR $a4b2   ; Clamp XY to 0
a45a: 8c 56 68     STY $6856
a45d: 8e 57 68     STX $6857
a460: a9 00        LDA #$00
a462: 20 3c af     JSR $af3c   ; w[A]<=0 (sets flags NZ)
a465: d0 05        BNE +$05  [$a46c]
a467: a9 28        LDA #$28
a469: 4c 07 aa     JMP $aa07
a46c: a0 02        LDY #$02    ; clear sleep status
a46e: b1 80        LDA ($80),Y
a470: 29 df        AND #$df
a472: 91 80        STA ($80),Y
a474: a0 01        LDY #$01    ; in both structs
a476: b1 82        LDA ($82),Y
a478: 29 df        AND #$df
a47a: 91 82        STA ($82),Y
a47c: a9 27        LDA #$27
a47e: 4c 07 aa     JMP $aa07

; unstop player?
a481: 48           PHA
a482: 20 92 a0     JSR $a092
a485: 68           PLA
a486: 20 45 a1     JSR $a145   ; Warrior A structs: p[$82]=permanent, p[$80]=in-battle
a489: 20 27 f2     JSR $f227   ; A = RND (0 .. 255) ??
a48c: 29 03        AND #$03    ; 25% chance to unstop
a48e: f0 05        BEQ +$05  [$a495]
a490: a9 2a        LDA #$2a
a492: 4c 07 aa     JMP $aa07
a495: a0 02        LDY #$02    ; clear stop status in both structs
a497: b1 80        LDA ($80),Y
a499: 29 ef        AND #$ef
a49b: 91 80        STA ($80),Y
a49d: a0 01        LDY #$01
a49f: b1 82        LDA ($82),Y
a4a1: 29 ef        AND #$ef
a4a3: 91 82        STA ($82),Y
a4a5: a9 29        LDA #$29
a4a7: 4c 07 aa     JMP $aa07

; Clamp XY to 255
a4aa: 8a           TXA
a4ab: f0 04        BEQ +$04  [$a4b1]
a4ad: a2 00        LDX #$00
a4af: a0 ff        LDY #$ff
a4b1: 60           RTS

; Clamp XY to 0
a4b2: 8a           TXA
a4b3: 10 04        BPL +$04  [$a4b9]
a4b5: a2 00        LDX #$00
a4b7: a0 00        LDY #$00
a4b9: 60           RTS

; ATTACK!!
a4ba: 29 03        AND #$03
a4bc: 8d 84 68     STA $6884   ; attacker index
a4bf: 20 45 a1     JSR $a145   ; Warrior A structs: p[$82]=permanent, p[$80]=in-battle
a4c2: 8e 85 68     STX $6885   ; target index
a4c5: 8e 8a 6c     STX $6c8a
a4c8: 8a           TXA
a4c9: 20 86 bb     JSR $bb86   ; p[$84] = address of in-RAM struct for slot A
a4cc: 85 84        STA $84
a4ce: 86 85        STX $85
a4d0: a0 00        LDY #$00    ; p[$86] = in-ROM struct for target
a4d2: b1 84        LDA ($84),Y
a4d4: 85 86        STA $86
a4d6: c8           INY
a4d7: b1 84        LDA ($84),Y
a4d9: 85 87        STA $87
a4db: a9 00        LDA #$00
a4dd: 8d 87 68     STA $6887   ; attacker type (0=player, 1=monster)
a4e0: a0 09        LDY #$09
a4e2: b1 80        LDA ($80),Y
a4e4: 8d 6c 68     STA $686c   ; attacker damage
a4e7: a0 0d        LDY #$0d
a4e9: b1 80        LDA ($80),Y
a4eb: 8d 6d 68     STA $686d   ; attacker category attack
a4ee: a0 0e        LDY #$0e
a4f0: b1 80        LDA ($80),Y
a4f2: 8d 6e 68     STA $686e   ; attacker element
a4f5: a0 05        LDY #$05
a4f7: b1 80        LDA ($80),Y
a4f9: 8d 6f 68     STA $686f   ; attacker hit %
a4fc: a0 0b        LDY #$0b
a4fe: b1 80        LDA ($80),Y
a500: 8d 70 68     STA $6870   ; attacker hit multiplier
a503: a0 0c        LDY #$0c
a505: b1 80        LDA ($80),Y
a507: 8d 71 68     STA $6871   ; attacker #hits
a50a: a0 0f        LDY #$0f
a50c: b1 80        LDA ($80),Y
a50e: 8d 72 68     STA $6872   ; attacker critical %
a511: a0 01        LDY #$01
a513: b1 82        LDA ($82),Y
a515: 8d 88 68     STA $6888   ; attacker status
a518: a0 10        LDY #$10
a51a: b1 80        LDA ($80),Y
a51c: 8d 80 68     STA $6880   ; attacker weapon GFX
a51f: a0 11        LDY #$11
a521: b1 80        LDA ($80),Y
a523: 8d 81 68     STA $6881   ; attacker weapon palette
a526: a0 06        LDY #$06
a528: b1 84        LDA ($84),Y
a52a: 8d 89 68     STA $6889   ; target status
a52d: a0 10        LDY #$10
a52f: b1 86        LDA ($86),Y
a531: 8d 76 68     STA $6876   ; target category
a534: a0 12        LDY #$12
a536: b1 86        LDA ($86),Y
a538: 8d 77 68     STA $6877   ; target elemental weakness
a53b: a0 0a        LDY #$0a
a53d: b1 84        LDA ($84),Y
a53f: 8d 78 68     STA $6878   ; target evade %
a542: a0 04        LDY #$04
a544: b1 84        LDA ($84),Y
a546: 8d 79 68     STA $6879   ; target absorb
a549: a0 02        LDY #$02
a54b: b1 84        LDA ($84),Y
a54d: 8d 7c 68     STA $687c   ; target HP
a550: c8           INY
a551: b1 84        LDA ($84),Y
a553: 8d 7d 68     STA $687d
a556: ad 84 68     LDA $6884   ; player indicator in $6c89
a559: 09 80        ORA #$80
a55b: 8d 89 6c     STA $6c89
a55e: 20 7b a6     JSR $a67b   ; Do physical attack
a561: a0 06        LDY #$06
a563: ad 89 68     LDA $6889   ; save new target status
a566: 91 84        STA ($84),Y
a568: a0 02        LDY #$02    ; save new target HP
a56a: ad 7c 68     LDA $687c
a56d: 91 84        STA ($84),Y
a56f: c8           INY
a570: ad 7d 68     LDA $687d
a573: 91 84        STA ($84),Y
a575: a0 02        LDY #$02
a577: ad 88 68     LDA $6888   ; save new attacker status (huh?)
a57a: 91 80        STA ($80),Y
a57c: a0 01        LDY #$01
a57e: 91 82        STA ($82),Y
a580: 60           RTS

; ENEMY ATTACK!
a581: 29 03        AND #$03
a583: 8d 85 68     STA $6885   ; target index
a586: 20 45 a1     JSR $a145   ; Warrior A structs: p[$82]=permanent, p[$80]=in-battle
a589: 8e 84 68     STX $6884   ; attacker index
a58c: 8e 89 6c     STX $6c89
a58f: 8a           TXA
a590: 20 86 bb     JSR $bb86   ; p[$84] = address of in-RAM struct for slot A
a593: 85 84        STA $84
a595: 86 85        STX $85
a597: a0 00        LDY #$00    ; p[$86] = in-ROM struct for attacker
a599: b1 84        LDA ($84),Y
a59b: 85 86        STA $86
a59d: c8           INY
a59e: b1 84        LDA ($84),Y
a5a0: 85 87        STA $87
a5a2: a9 01        LDA #$01
a5a4: 8d 87 68     STA $6887   ; attacker type (0=player, 1=monster)
a5a7: a0 0b        LDY #$0b
a5a9: b1 84        LDA ($84),Y
a5ab: 8d 6c 68     STA $686c   ; attacker damage
a5ae: a0 10        LDY #$10
a5b0: b1 86        LDA ($86),Y
;FIX: a9 00        LDA #$00
a5b2: 8d 6d 68     STA $686d   ; BUG attacker category -> attacker category attack
a5b5: a0 12        LDY #$12
;FIX: a0 0e        LDY #$0e
a5b7: b1 86        LDA ($86),Y
a5b9: 8d 6e 68     STA $686e   ; BUG attacker elemental weakness -> attacker element
a5bc: a0 0b        LDY #$0b
a5be: b1 86        LDA ($86),Y
a5c0: 8d 6f 68     STA $686f   ; attacker hit %
a5c3: a0 05        LDY #$05
a5c5: b1 84        LDA ($84),Y
a5c7: 8d 70 68     STA $6870   ; attacker hit multiplier
a5ca: a0 0a        LDY #$0a
a5cc: b1 86        LDA ($86),Y
a5ce: 8d 71 68     STA $6871   ; attacker number of hits
a5d1: a0 0d        LDY #$0d
a5d3: b1 86        LDA ($86),Y
a5d5: 8d 72 68     STA $6872   ; attacker critical hit chance
a5d8: a0 0f        LDY #$0f
a5da: b1 86        LDA ($86),Y
a5dc: 8d 73 68     STA $6873   ; attacker attack effect
a5df: a0 06        LDY #$06
a5e1: b1 84        LDA ($84),Y
a5e3: 8d 88 68     STA $6888   ; attacker status
a5e6: a0 0d        LDY #$0d
a5e8: b1 80        LDA ($80),Y
;FIX: a9 00        LDA #$00
a5ea: 8d 76 68     STA $6876   ; BUG target category attack -> target category
a5ed: a0 0e        LDY #$0e
a5ef: b1 80        LDA ($80),Y
;FIX: a9 00        LDA #$00
a5f1: 8d 77 68     STA $6877   ; BUG target elemental attack -> target elemental weakness
a5f4: a0 07        LDY #$07
a5f6: b1 80        LDA ($80),Y
a5f8: 8d 78 68     STA $6878   ; target evade %
a5fb: a0 08        LDY #$08
a5fd: b1 80        LDA ($80),Y
a5ff: 8d 79 68     STA $6879   ; target absorb
a602: a0 06        LDY #$06
a604: b1 80        LDA ($80),Y
a606: 8d 7a 68     STA $687a   ; target mag def
a609: a0 0a        LDY #$0a
a60b: b1 80        LDA ($80),Y
a60d: 8d 7b 68     STA $687b   ; target elemental resistance
a610: a0 0a        LDY #$0a
a612: b1 82        LDA ($82),Y
a614: 8d 7c 68     STA $687c   ; target HP
a617: c8           INY
a618: b1 82        LDA ($82),Y
a61a: 8d 7d 68     STA $687d
a61d: a0 01        LDY #$01
a61f: b1 82        LDA ($82),Y
a621: 8d 89 68     STA $6889   ; target status
a624: ad 85 68     LDA $6885   ; target index
a627: 09 80        ORA #$80
a629: 8d 8a 6c     STA $6c8a
a62c: 20 7b a6     JSR $a67b   ; Do physical attack
a62f: a0 06        LDY #$06
a631: ad 88 68     LDA $6888   ; save new attacker status (huh?)
a634: 91 84        STA ($84),Y
a636: a0 03        LDY #$03    ; save new target HP
a638: ad 7c 68     LDA $687c
a63b: 48           PHA
a63c: 91 80        STA ($80),Y
a63e: c8           INY
a63f: ad 7d 68     LDA $687d
a642: 48           PHA
a643: 91 80        STA ($80),Y
a645: a0 0b        LDY #$0b
a647: 68           PLA
a648: 91 82        STA ($82),Y
a64a: 88           DEY
a64b: 68           PLA
a64c: 91 82        STA ($82),Y
a64e: a0 02        LDY #$02
a650: ad 89 68     LDA $6889   ; save new target status
a653: 91 80        STA ($80),Y
a655: a0 01        LDY #$01
a657: 91 82        STA ($82),Y
a659: 60           RTS

; Zero high bytes of w[0]-w[9]
a65a: a9 00        LDA #$00
a65c: 8d 57 68     STA $6857
a65f: 8d 59 68     STA $6859
a662: 8d 5b 68     STA $685b
a665: 8d 5d 68     STA $685d
a668: 8d 5f 68     STA $685f
a66b: 8d 61 68     STA $6861
a66e: 8d 63 68     STA $6863
a671: 8d 65 68     STA $6865
a674: 8d 67 68     STA $6867
a677: 8d 69 68     STA $6869
a67a: 60           RTS

; Do physical attack
a67b: a9 00        LDA #$00
a67d: aa           TAX
a67e: a0 02        LDY #$02
a680: 20 a2 a0     JSR $a0a2
a683: a9 02        LDA #$02
a685: a0 03        LDY #$03
a687: a2 00        LDX #$00
a689: 20 a2 a0     JSR $a0a2
a68c: 20 5a a6     JSR $a65a   ; Zero high bytes of w[0]-w[9]
a68f: a9 a8        LDA #$a8   ; w[0] = 168
a691: 8d 56 68     STA $6856
a694: ad 6c 68     LDA $686c  ; w[1] = attacker damage
a697: 8d 58 68     STA $6858
a69a: ad 72 68     LDA $6872  ; w[6] = attacker critical %
a69d: 8d 62 68     STA $6862
a6a0: ad 88 68     LDA $6888  ; if attacker dark, w[0]-=40
a6a3: 29 08        AND #$08
a6a5: f0 09        BEQ +$09  [$a6b0]
a6a7: ad 56 68     LDA $6856
a6aa: 38           SEC
a6ab: e9 28        SBC #$28
a6ad: 8d 56 68     STA $6856
;FIX { START attack evade patch
;       replace this code with the contents of attack-evade-patch.txt
a6b0: ad 89 68     LDA $6889  ; if target dark, w[0]+=40
a6b3: 29 08        AND #$08
a6b5: f0 09        BEQ +$09  [$a6c0]
a6b7: ad 56 68     LDA $6856
a6ba: 18           CLC
a6bb: 69 28        ADC #$28
a6bd: 8d 56 68     STA $6856
a6c0: ad 6d 68     LDA $686d   ; if category or element hit,
a6c3: 2d 76 68     AND $6876   ;  w[0]=clamp255(w[0]+40) (useless, and BUG?) and
a6c6: 8d 5c 68     STA $685c   ;  w[1]=clamp255(w[1]+4)
a6c9: ad 6e 68     LDA $686e
a6cc: 2d 77 68     AND $6877
a6cf: 8d 5e 68     STA $685e
a6d2: ad 5c 68     LDA $685c
a6d5: 0d 5e 68     ORA $685e   
a6d8: f0 26        BEQ +$26  [$a700]
a6da: a9 00        LDA #$00
a6dc: a2 28        LDX #$28
a6de: 20 dd ae     JSR $aedd   ; w[A] = clamp(w[A] + X)
a6e1: ac 56 68     LDY $6856
a6e4: ae 57 68     LDX $6857
a6e7: 20 aa a4     JSR $a4aa   ; Clamp XY to 255
a6ea: 8c 56 68     STY $6856
a6ed: 8e 57 68     STX $6857
a6f0: ad 58 68     LDA $6858
a6f3: 18           CLC
a6f4: 69 04        ADC #$04
a6f6: 8d 58 68     STA $6858
a6f9: 90 05        BCC +$05  [$a700]
a6fb: a9 ff        LDA #$ff
a6fd: 8d 58 68     STA $6858
a700: ad 89 68     LDA $6889  ;; if target stopped or asleep,
a703: 29 30        AND #$30   ;;  damage*=5/4 and don't alter hit chance
a705: f0 16        BEQ +$16  [$a71d]
a707: ad 58 68     LDA $6858
a70a: 4a           LSR
a70b: 4a           LSR
a70c: 18           CLC
a70d: 6d 58 68     ADC $6858
a710: 8d 58 68     STA $6858
a713: 90 36        BCC +$36  [$a74b]
a715: a9 ff        LDA #$ff
a717: 8d 58 68     STA $6858
a71a: 4c 4b a7     JMP $a74b
a71d: a9 00        LDA #$00    ;; otherwise, alter hit chance: (BUG: should be done unconditionally)
a71f: ae 6f 68     LDX $686f   ;;  w[0]+=attacker hit% (clamp 255)
a722: 20 dd ae     JSR $aedd   ; w[A] = clamp(w[A] + X)
a725: ac 56 68     LDY $6856
a728: ae 57 68     LDX $6857
a72b: 20 aa a4     JSR $a4aa   ; Clamp XY to 255  BUG: should be done after evade subtraction
a72e: 8c 56 68     STY $6856
a731: 8e 57 68     STX $6857
a734: a9 00        LDA #$00    ;;  w[0]-=target evade (clamp 0)
a736: ae 78 68     LDX $6878   ; target evade
a739: 20 0a af     JSR $af0a   ; w[A] = clamp(w[A] - X)
a73c: ac 56 68     LDY $6856
a73f: ae 57 68     LDX $6857
a742: 20 b2 a4     JSR $a4b2   ; Clamp XY to 0
a745: 8c 56 68     STY $6856
a748: 8e 57 68     STX $6857
;FIX  END attack evade patch }
a74b: ad 56 68     LDA $6856   ;; If w[0]==0, w[0]=1
a74e: d0 03        BNE +$03  [$a753]
a750: ee 56 68     INC $6856
a753: ad 62 68     LDA $6862   ;; if w[6]>w[0], w[6]=w[0] (crit chance always <= hit chance)
a756: cd 56 68     CMP $6856
a759: 90 06        BCC +$06  [$a761]
a75b: ad 56 68     LDA $6856
a75e: 8d 62 68     STA $6862
a761: ad 71 68     LDA $6871   ;; w[2]=attacker #hits * hit multiplier, min 1
a764: ae 70 68     LDX $6870
a767: 20 09 ae     JSR $ae09   ; XA = X*A
a76a: 8d 5a 68     STA $685a
a76d: ad 5a 68     LDA $685a
a770: d0 03        BNE +$03  [$a775]
a772: ee 5a 68     INC $685a
a775: ad 81 68     LDA $6881   ; load palette
a778: a2 00        LDX #$00
a77a: 20 2f ab     JSR $ab2f
a77d: ad 87 68     LDA $6887   ;; If player, set weapon GFX
a780: d0 24        BNE +$24  [$a7a6]
a782: ae 80 68     LDX $6880   ; attacker weapon GFX
a785: d0 03        BNE +$03  [$a78a]
a787: ee ee 6a     INC $6aee
a78a: ae 80 68     LDX $6880   ; attacker weapon GFX
a78d: a0 00        LDY #$00
a78f: ad 84 68     LDA $6884   ; attacker index
a792: 20 70 9e     JSR $9e70   ; set GFX (and do animation?)
a795: ad 89 68     LDA $6889   ; target status
a798: 29 03        AND #$03
a79a: d0 03        BNE +$03  [$a79f]
a79c: 20 fa bb     JSR $bbfa   ; do attack sound & sparkles (if not dead/stoned)
a79f: a9 00        LDA #$00
a7a1: 8d ee 6a     STA $6aee
a7a4: f0 17        BEQ +$17  [$a7bd]  ; (unconditional branch)
a7a6: a9 01        LDA #$01    ;; If monster...
a7a8: 20 b8 be     JSR $beb8   ; Play sound
a7ab: 20 2a f2     JSR $f22a
a7ae: ad 89 68     LDA $6889   ; target status
a7b1: 29 03        AND #$03
a7b3: d0 08        BNE +$08  [$a7bd]
a7b5: ad 85 68     LDA $6885   ; if target not dead...
a7b8: 29 03        AND #$03
a7ba: 20 fc a0     JSR $a0fc
a7bd: ad 89 68     LDA $6889   ; End up here, monster or player
a7c0: 29 03        AND #$03
a7c2: f0 05        BEQ +$05  [$a7c9]
a7c4: a9 21        LDA #$21    ; if target dead, we're done
a7c6: 4c 07 aa     JMP $aa07
a7c9: a9 00        LDA #$00    ;;; Calculate damages
a7cb: 8d 6b 68     STA $686b   ; zero accumulators
a7ce: 8d 6a 68     STA $686a
a7d1: 8d 82 68     STA $6882
a7d4: 8d 83 68     STA $6883
a7d7: ad 58 68     LDA $6858   ; w[1] has damage
a7da: 8d ad 6b     STA $6bad
a7dd: 20 5a a6     JSR $a65a   ; Zero high bytes of w[0]-w[9]
a7e0: 8d 60 68     STA $6860   ; zero this-hit damage
a7e3: a2 c8        LDX #$c8
a7e5: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
a7e8: 8d 5e 68     STA $685e   ; $685e = RND (0 .. 200)
a7eb: ad 5e 68     LDA $685e
a7ee: c9 c8        CMP #$c8
a7f0: d0 03        BNE +$03  [$a7f5]
a7f2: 4c cc a8     JMP $a8cc   ; roll 200 = always miss
a7f5: ae ad 6b     LDX $6bad
a7f8: a9 00        LDA #$00
a7fa: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
a7fd: 18           CLC
a7fe: 6d ad 6b     ADC $6bad
a801: 8d 58 68     STA $6858   ; D = D .. 2*D, clamp to 255
a804: 90 05        BCC +$05  [$a80b]
a806: a9 ff        LDA #$ff
a808: 8d 58 68     STA $6858
a80b: ad 56 68     LDA $6856   ; if roll <= hit chance, hit
a80e: cd 5e 68     CMP $685e
a811: 90 2b        BCC +$2b  [$a83e]  ; BUG: when you miss, you should completely miss
;FIX: 90 df        BCC +$df  [$a7f2]
a813: ad 58 68     LDA $6858   ; Add D into accumulator
a816: 8d 60 68     STA $6860
a819: a9 05        LDA #$05
a81b: ae 79 68     LDX $6879   ; subtract target absorb
a81e: 20 0a af     JSR $af0a   ; w[A] = clamp(w[A] - X)
a821: ac 60 68     LDY $6860
a824: ae 61 68     LDX $6861
a827: 20 b2 a4     JSR $a4b2   ; Clamp XY to 0
a82a: 8c 60 68     STY $6860
a82d: 8e 61 68     STX $6861
a830: ad 60 68     LDA $6860
a833: 0d 61 68     ORA $6861
a836: d0 03        BNE +$03  [$a83b]
a838: ee 60 68     INC $6860   ; min 1 damage
a83b: ee 6a 68     INC $686a   ; mark hit
a83e: ad 62 68     LDA $6862   ; if roll <= critical chance, critical
a841: cd 5e 68     CMP $685e   ;  (even though it checks, this will never pass if the above missed)
a844: 90 0b        BCC +$0b  [$a851]
a846: a9 05        LDA #$05    ; Add D for critical
a848: ae 58 68     LDX $6858
a84b: 20 dd ae     JSR $aedd   ; w[A] = clamp(w[A] + X)
a84e: ee 6b 68     INC $686b   ; mark critical
a851: a9 16        LDA #$16    ; Add damage for this hit into total damage
a853: a2 16        LDX #$16
a855: a0 05        LDY #$05
a857: 20 7b ae     JSR $ae7b   ; w[A] = w[X] + w[Y]
a85a: ad 87 68     LDA $6887   ; If monster and monster has attack effect and hit, do it
a85d: f0 6d        BEQ +$6d  [$a8cc]
a85f: ad 73 68     LDA $6873  ; attack effect
a862: f0 68        BEQ +$68  [$a8cc]
a864: ad 6a 68     LDA $686a  ; hit? BUG: tries even on misses after the first successful hit
a867: f0 63        BEQ +$63  [$a8cc]
a869: a9 64        LDA #$64   ;; chance to apply status: 100, or 0 if strong
a86b: 8d 64 68     STA $6864
a86e: ad 7b 68     LDA $687b  ; target elemental resistance
a871: 2d 6e 68     AND $686e  ; attack element
a874: 8d 68 68     STA $6868
a877: ad 68 68     LDA $6868
a87a: f0 05        BEQ +$05  [$a881]
a87c: a9 00        LDA #$00
a87e: 8d 64 68     STA $6864
a881: a9 07        LDA #$07   ;; subtract target mag def, clamp to 1
a883: ae 7a 68     LDX $687a  ; target mag def
a886: 20 0a af     JSR $af0a   ; w[A] = clamp(w[A] - X)
a889: ac 64 68     LDY $6864
a88c: ae 65 68     LDX $6865
a88f: 20 b2 a4     JSR $a4b2   ; Clamp XY to 0
a892: 8c 64 68     STY $6864
a895: 8e 65 68     STX $6865
a898: a9 07        LDA #$07
a89a: 20 3c af     JSR $af3c   ; w[A]<=0 (sets flags NZ)
a89d: d0 03        BNE +$03  [$a8a2]
a89f: ee 64 68     INC $6864
a8a2: a9 00        LDA #$00    ;; apply if roll!=200 and roll <= chance
a8a4: a2 c8        LDX #$c8
a8a6: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
a8a9: 8d 66 68     STA $6866
a8ac: c9 c8        CMP #$c8
a8ae: f0 1c        BEQ +$1c  [$a8cc]
a8b0: ad 64 68     LDA $6864
a8b3: cd 66 68     CMP $6866
a8b6: 90 14        BCC +$14  [$a8cc]
a8b8: ad 89 68     LDA $6889   ; target status
a8bb: 49 ff        EOR #$ff
a8bd: 2d 73 68     AND $6873   ; attack status
a8c0: 20 88 a9     JSR $a988   ; Display message about status applied to player
a8c3: ad 89 68     LDA $6889   ; target status
a8c6: 0d 73 68     ORA $6873   ; attack status
a8c9: 8d 89 68     STA $6889   ; target status
a8cc: ce 5a 68     DEC $685a   ;; ... repeat for the #hits
a8cf: f0 03        BEQ +$03  [$a8d4]
a8d1: 4c dd a7     JMP $a7dd
a8d4: ad 6a 68     LDA $686a   ; more than one hit?
a8d7: c9 02        CMP #$02
a8d9: 90 26        BCC +$26  [$a901]
a8db: 8d 0b 6b     STA $6b0b   ; all this to display the number of hits?
a8de: a9 11        LDA #$11
a8e0: 8d 0a 6b     STA $6b0a
a8e3: a9 00        LDA #$00
a8e5: 8d 0c 6b     STA $6b0c
a8e8: 8d 0f 6b     STA $6b0f
a8eb: a9 0f        LDA #$0f
a8ed: 8d 0d 6b     STA $6b0d
a8f0: a9 2b        LDA #$2b
a8f2: 8d 0e 6b     STA $6b0e
a8f5: a9 01        LDA #$01
a8f7: a2 0a        LDX #$0a
a8f9: a0 6b        LDY #$6b
a8fb: 20 18 f2     JSR $f218
a8fe: ee f8 6a     INC $6af8
a901: ad 82 68     LDA $6882  ; any damage?
a904: 0d 83 68     ORA $6883
a907: d0 11        BNE +$11  [$a91a]
a909: a9 0f        LDA #$0f   ; setup miss message
a90b: 8d 2a 6b     STA $6b2a
a90e: a9 40        LDA #$40
a910: 8d 2b 6b     STA $6b2b
a913: a9 00        LDA #$00
a915: 8d 2c 6b     STA $6b2c
a918: f0 20        BEQ +$20  [$a93a]
a91a: a9 11        LDA #$11   ; setup damage message
a91c: 8d 2a 6b     STA $6b2a
a91f: ad 82 68     LDA $6882
a922: 8d 2b 6b     STA $6b2b
a925: ad 83 68     LDA $6883
a928: 8d 2c 6b     STA $6b2c
a92b: a9 0f        LDA #$0f
a92d: 8d 2d 6b     STA $6b2d
a930: a9 2e        LDA #$2e
a932: 8d 2e 6b     STA $6b2e
a935: a9 00        LDA #$00
a937: 8d 2f 6b     STA $6b2f
a93a: a9 03        LDA #$03   ; display the message
a93c: a2 2a        LDX #$2a
a93e: a0 6b        LDY #$6b
a940: 20 18 f2     JSR $f218
a943: ee f8 6a     INC $6af8
a946: ad 6b 68     LDA $686b  ; critical? display message
a949: f0 08        BEQ +$08  [$a953]
a94b: a9 2c        LDA #$2c
a94d: 20 9d a0     JSR $a09d
a950: 20 e6 a0     JSR $a0e6  ; Respond rate delay
a953: a9 13        LDA #$13   ; HP -= damage, clamp to 0
a955: a2 13        LDX #$13
a957: a0 16        LDY #$16
a959: 20 ac ae     JSR $aeac   ; w[A] = w[X] - w[Y]
a95c: ac 7c 68     LDY $687c
a95f: ae 7d 68     LDX $687d
a962: 20 b2 a4     JSR $a4b2   ; Clamp XY to 0
a965: 8c 7c 68     STY $687c
a968: 8e 7d 68     STX $687d   ; target hit multiplier
a96b: a9 13        LDA #$13    ;; If dead, display "terminated" and set status
a96d: 20 3c af     JSR $af3c   ; w[A]<=0 (sets flags NZ)
a970: d0 13        BNE +$13  [$a985]
a972: a9 01        LDA #$01
a974: 8d 89 68     STA $6889   ; target status
a977: ad 87 68     LDA $6887   ; attacker type (0=player, 1=monster)
a97a: f0 04        BEQ +$04  [$a980]
a97c: a9 20        LDA #$20
a97e: d0 02        BNE +$02  [$a982]
a980: a9 3f        LDA #$3f
a982: 20 9d a0     JSR $a09d
a985: 4c d7 a0     JMP $a0d7

; Display message about status applied to player
a988: 0a           ASL
a989: 90 07        BCC +$07  [$a992]
a98b: 48           PHA         ; CONF status
a98c: a9 13        LDA #$13
a98e: 20 0d aa     JSR $aa0d   ; display the message?
a991: 68           PLA
a992: 0a           ASL
a993: 90 07        BCC +$07  [$a99c]
a995: 48           PHA         ; MUTE status
a996: a9 07        LDA #$07
a998: 20 0d aa     JSR $aa0d   ; display the message?
a99b: 68           PLA
a99c: 0a           ASL
a99d: 90 0a        BCC +$0a  [$a9a9]
a99f: 48           PHA         ; SLEEP status
a9a0: a9 04        LDA #$04
a9a2: 20 0d aa     JSR $aa0d   ; display the message?
a9a5: 20 f9 a9     JSR $a9f9   ; clear player command for this round
a9a8: 68           PLA
a9a9: 0a           ASL
a9aa: 90 0a        BCC +$0a  [$a9b6]
a9ac: 48           PHA         ; STOP status
a9ad: a9 17        LDA #$17
a9af: 20 0d aa     JSR $aa0d   ; display the message?
a9b2: 20 f9 a9     JSR $a9f9   ; clear player command for this round
a9b5: 68           PLA
a9b6: 0a           ASL
a9b7: 90 07        BCC +$07  [$a9c0]
a9b9: 48           PHA         ; DARK status
a9ba: a9 09        LDA #$09
a9bc: 20 0d aa     JSR $aa0d   ; display the message?
a9bf: 68           PLA
a9c0: 0a           ASL
a9c1: 90 07        BCC +$07  [$a9ca]
a9c3: 48           PHA         ; POISON status
a9c4: a9 14        LDA #$14
a9c6: 20 0d aa     JSR $aa0d   ; display the message?
a9c9: 68           PLA
a9ca: 0a           ASL
a9cb: 90 0a        BCC +$0a  [$a9d7]
a9cd: 48           PHA         ; STONE status
a9ce: a9 2f        LDA #$2f
a9d0: 20 0d aa     JSR $aa0d   ; display the message?
a9d3: 20 f9 a9     JSR $a9f9   ; clear player command for this round
a9d6: 68           PLA
a9d7: 0a           ASL
a9d8: 90 1e        BCC +$1e  [$a9f8]
a9da: a9 00        LDA #$00    ; DEAD status
a9dc: 8d 7c 68     STA $687c   ; zero HP
a9df: 8d 7d 68     STA $687d
a9e2: a9 20        LDA #$20
a9e4: 20 0d aa     JSR $aa0d   ; display the message?
a9e7: 20 f9 a9     JSR $a9f9   ; clear player command for this round
a9ea: 68           PLA         ;; Skip returning to the caller, instead jump
a9eb: 68           PLA         ;; straight to post-processing
a9ec: ad 89 68     LDA $6889
a9ef: 0d 73 68     ORA $6873
a9f2: 8d 89 68     STA $6889
a9f5: 4c 85 a9     JMP $a985
a9f8: 60           RTS

; clear player command for this round
a9f9: ad 85 68     LDA $6885   ; target index
a9fc: 29 03        AND #$03
a9fe: 0a           ASL
a9ff: 0a           ASL
aa00: a8           TAY
aa01: a9 00        LDA #$00
aa03: 99 8f 68     STA $688f,Y
aa06: 60           RTS

aa07: 20 9d a0     JSR $a09d
aa0a: 4c d7 a0     JMP $a0d7

; display a message?
aa0d: 20 9d a0     JSR $a09d
aa10: 20 e6 a0     JSR $a0e6  ; Respond rate delay
aa13: ce f8 6a     DEC $6af8
aa16: a9 01        LDA #$01
aa18: 4c 0f f2     JMP $f20f

; A = YX / A, X = YX % A
aa1b: 8d 8d 68     STA $688d
aa1e: 8e 8b 68     STX $688b
aa21: 8c 8c 68     STY $688c
aa24: 20 2b ae     JSR $ae2b   ; w[$688b] /= $688d, $688d = w[$688b] % $688d
aa27: ad 8b 68     LDA $688b
aa2a: ae 8d 68     LDX $688d
aa2d: 60           RTS

aa2e: a9 ff        LDA #$ff
aa30: 8d 56 68     STA $6856
aa33: a9 64        LDA #$64
aa35: 20 1b aa     JSR $aa1b   ; A = YX / A, X = YX % A
aa38: 09 80        ORA #$80
aa3a: 8d 58 68     STA $6858
aa3d: a0 00        LDY #$00
aa3f: a9 0a        LDA #$0a
aa41: 20 1b aa     JSR $aa1b   ; A = YX / A, X = YX % A
aa44: 09 80        ORA #$80
aa46: 8d 5a 68     STA $685a
aa49: 8a           TXA
aa4a: 09 80        ORA #$80
aa4c: 8d 5c 68     STA $685c
aa4f: 60           RTS

aa50: 20 76 97     JSR $9776   ; set player postures
aa53: 20 0c 98     JSR $980c
aa56: a9 00        LDA #$00
aa58: 8d 5e 68     STA $685e
aa5b: ad 5e 68     LDA $685e
aa5e: 20 45 a1     JSR $a145   ; Warrior A structs: p[$82]=permanent, p[$80]=in-battle
aa61: a0 01        LDY #$01    ; Find 'first' status: dead, stone, poison,
aa63: b1 82        LDA ($82),Y ;  dark, stop, sleep, mute
aa65: 88           DEY
aa66: 4a           LSR
aa67: b0 05        BCS +$05  [$aa6e]
aa69: c8           INY
aa6a: c0 07        CPY #$07
aa6c: d0 f8        BNE +$f8  [$aa66]
aa6e: 98           TYA
aa6f: 18           CLC
aa70: 69 41        ADC #$41
aa72: 8d 60 6b     STA $6b60
aa75: ad 5e 68     LDA $685e
aa78: 18           CLC
aa79: 69 04        ADC #$04
aa7b: 8d 5e 6b     STA $6b5e
aa7e: a9 0f        LDA #$0f
aa80: 8d 5f 6b     STA $6b5f
aa83: a9 00        LDA #$00
aa85: 8d 61 6b     STA $6b61
aa88: a0 0a        LDY #$0a     ; Load HP
aa8a: b1 82        LDA ($82),Y
aa8c: aa           TAX
aa8d: c8           INY
aa8e: b1 82        LDA ($82),Y
aa90: a8           TAY
aa91: 20 2e aa     JSR $aa2e
aa94: a2 5e        LDX #$5e
aa96: a0 6b        LDY #$6b
aa98: 20 2d f2     JSR $f22d
aa9b: ad 5e 68     LDA $685e
aa9e: 0a           ASL
aa9f: a8           TAY
aaa0: b9 21 ab     LDA $ab21,Y
aaa3: 85 88        STA $88
aaa5: b9 22 ab     LDA $ab22,Y
aaa8: 85 89        STA $89
aaaa: 20 00 fe     JSR $fe00   ; wait for V-blank
aaad: ad 02 20     LDA $2002
aab0: a0 00        LDY #$00
aab2: 20 fc aa     JSR $aafc
aab5: a0 01        LDY #$01
aab7: 20 fc aa     JSR $aafc
aaba: a0 08        LDY #$08
aabc: 20 fc aa     JSR $aafc
aabf: a0 09        LDY #$09
aac1: 20 fc aa     JSR $aafc
aac4: a0 08        LDY #$08
aac6: b9 55 68     LDA $6855,Y
aac9: 99 d3 6c     STA $6cd3,Y
aacc: 88           DEY
aacd: d0 f7        BNE +$f7  [$aac6]
aacf: a0 00        LDY #$00
aad1: b9 d6 6c     LDA $6cd6,Y
aad4: c9 80        CMP #$80
aad6: d0 0b        BNE +$0b  [$aae3]
aad8: a9 ff        LDA #$ff
aada: 99 d6 6c     STA $6cd6,Y
aadd: c8           INY
aade: c8           INY
aadf: c0 04        CPY #$04
aae1: d0 ee        BNE +$ee  [$aad1]
aae3: a0 00        LDY #$00
aae5: 20 fc aa     JSR $aafc
aae8: 20 8a 97     JSR $978a   ; Enable screen
aaeb: 20 7c a0     JSR $a07c   ; some sound thing
aaee: ee 5e 68     INC $685e
aaf1: ad 5e 68     LDA $685e
aaf4: c9 04        CMP #$04
aaf6: f0 03        BEQ +$03  [$aafb]
aaf8: 4c 5b aa     JMP $aa5b
aafb: 60           RTS

aafc: a5 89        LDA $89
aafe: 8d 06 20     STA $2006
ab01: a5 88        LDA $88
ab03: 8d 06 20     STA $2006
ab06: a2 04        LDX #$04
ab08: b9 d4 6c     LDA $6cd4,Y
ab0b: 8d 07 20     STA $2007
ab0e: c8           INY
ab0f: c8           INY
ab10: ca           DEX
ab11: d0 f5        BNE +$f5  [$ab08]
ab13: a5 88        LDA $88
ab15: 18           CLC
ab16: 69 20        ADC #$20
ab18: 85 88        STA $88
ab1a: a5 89        LDA $89
ab1c: 69 00        ADC #$00
ab1e: 85 89        STA $89
ab20: 60           RTS

ab21: 9a 20        .DW $209a
ab23: 5a 21        .DW $215a
ab25: 1a 22        .DW $221a
ab27: da 22        .DW $22da

ab29: 20 00 fe     JSR $fe00   ; wait for V-blank
ab2c: 4c 7c a0     JMP $a07c   ; some sound thing

; load palette?
ab2f: 48           PHA
ab30: 20 80 ab     JSR $ab80
ab33: 68           PLA
ab34: 8d a0 6b     STA $6ba0
ab37: 38           SEC
ab38: e9 10        SBC #$10
ab3a: 8d a1 6b     STA $6ba1
ab3d: 38           SEC
ab3e: e9 10        SBC #$10
ab40: 8d a2 6b     STA $6ba2
ab43: a9 ff        LDA #$ff
ab45: 8d 9f 6b     STA $6b9f
ab48: 8a           TXA
ab49: f0 05        BEQ +$05  [$ab50]
ab4b: a9 30        LDA #$30
ab4d: 8d a2 6b     STA $6ba2

; Wait for v-blank and upload palettes and do sound
ab50: 20 1e f2     JSR $f21e   ; $ff=$68b7 and wait for V-blank
ab53: a9 3f        LDA #$3f    ; upload palettes
ab55: 8d 06 20     STA $2006
ab58: a9 00        LDA #$00
ab5a: 8d 06 20     STA $2006
ab5d: a0 00        LDY #$00
ab5f: b9 87 6b     LDA $6b87,Y
ab62: 8d 07 20     STA $2007
ab65: c8           INY
ab66: c0 20        CPY #$20
ab68: d0 f5        BNE +$f5  [$ab5f]
ab6a: a9 3f        LDA #$3f
ab6c: 8d 06 20     STA $2006
ab6f: a9 00        LDA #$00
ab71: 8d 06 20     STA $2006
ab74: 8d 06 20     STA $2006
ab77: 8d 06 20     STA $2006
ab7a: 20 8a 97     JSR $978a   ; Enable screen
ab7d: 4c 7c a0     JMP $a07c   ; some sound thing

ab80: a0 20        LDY #$20
ab82: b9 33 6d     LDA $6d33,Y
ab85: 99 86 6b     STA $6b86,Y
ab88: 88           DEY
ab89: d0 f7        BNE +$f7  [$ab82]
ab8b: 60           RTS

ab8c: 20 a7 97     JSR $97a7   ; $0200-02ff = #$f0
ab8f: a9 00        LDA #$00
ab91: 8d ff 00     STA $00ff
ab94: 8d 01 20     STA $2001
ab97: 20 00 fe     JSR $fe00   ; wait for V-blank
ab9a: ad 02 20     LDA $2002
ab9d: a9 02        LDA #$02    ; upload sprites
ab9f: 8d 14 40     STA $4014
aba2: a9 04        LDA #$04
aba4: 8d b4 68     STA $68b4
aba7: 20 7c a0     JSR $a07c   ; some sound thing
abaa: 20 80 ab     JSR $ab80
abad: ae b4 68     LDX $68b4
abb0: 20 d8 ab     JSR $abd8
abb3: ca           DEX
abb4: d0 fa        BNE +$fa  [$abb0]
abb6: 20 fc ab     JSR $abfc   ; Wait 3 v-blanks and upload palettes
abb9: ce b4 68     DEC $68b4
abbc: d0 ec        BNE +$ec  [$abaa]
abbe: 20 80 ab     JSR $ab80
abc1: 4c 50 ab     JMP $ab50   ; Wait for v-blank and upload palettes and do sound

abc4: 20 80 ab     JSR $ab80
abc7: a9 04        LDA #$04
abc9: 8d b4 68     STA $68b4
abcc: 20 d8 ab     JSR $abd8
abcf: 20 fc ab     JSR $abfc   ; Wait 3 v-blanks and upload palettes
abd2: ce b4 68     DEC $68b4
abd5: d0 f5        BNE +$f5  [$abcc]
abd7: 60           RTS

abd8: a0 00        LDY #$00
abda: b9 87 6b     LDA $6b87,Y
abdd: 29 30        AND #$30
abdf: d0 04        BNE +$04  [$abe5]
abe1: a9 0f        LDA #$0f
abe3: d0 0e        BNE +$0e  [$abf3]
abe5: 38           SEC
abe6: e9 10        SBC #$10
abe8: 8d b3 68     STA $68b3
abeb: b9 34 6d     LDA $6d34,Y
abee: 29 cf        AND #$cf
abf0: 0d b3 68     ORA $68b3
abf3: 99 87 6b     STA $6b87,Y
abf6: c8           INY
abf7: c0 20        CPY #$20
abf9: d0 df        BNE +$df  [$abda]
abfb: 60           RTS

; Wait 3 v-blanks and upload palettes
abfc: 20 29 ab     JSR $ab29   ; wait for V-blank and do sound
abff: 20 50 ab     JSR $ab50   ; Wait for v-blank and upload palettes and do sound
ac02: 4c 29 ab     JMP $ab29   ; wait for V-blank and do sound

; XA = pointer to data for weapon A
ac05: a2 08        LDX #$08
ac07: 20 09 ae     JSR $ae09   ; XA = X*A
ac0a: 18           CLC
ac0b: 69 00        ADC #$00
ac0d: 48           PHA
ac0e: 8a           TXA
ac0f: 69 80        ADC #$80
ac11: aa           TAX
ac12: 68           PLA
ac13: 60           RTS

ac14: a2 04        LDX #$04
ac16: 20 09 ae     JSR $ae09   ; XA = X*A
ac19: 18           CLC
ac1a: 69 40        ADC #$40
ac1c: 48           PHA
ac1d: 8a           TXA
ac1e: 69 81        ADC #$81
ac20: aa           TAX
ac21: 68           PLA
ac22: 60           RTS
ac23: 0a           ASL
ac24: a8           TAY
ac25: b9 5d 9f     LDA $9f5d,Y  ; p[$80]=warrior Y permanent struct
ac28: 85 80        STA $80
ac2a: b9 5e 9f     LDA $9f5e,Y
ac2d: 85 81        STA $81
ac2f: 8a           TXA
ac30: 0a           ASL
ac31: a8           TAY
ac32: b9 5d 9f     LDA $9f5d,Y  ; p[$82]=warrior Y permanent struct
ac35: 85 82        STA $82
ac37: b9 5e 9f     LDA $9f5e,Y
ac3a: 85 83        STA $83
ac3c: 60           RTS
ac3d: 0a           ASL
ac3e: a8           TAY
ac3f: b9 6d 9f     LDA $9f6d,Y
ac42: 85 80        STA $80
ac44: b9 6e 9f     LDA $9f6e,Y
ac47: 85 81        STA $81
ac49: 8a           TXA
ac4a: 0a           ASL
ac4b: a8           TAY
ac4c: b9 6d 9f     LDA $9f6d,Y
ac4f: 85 82        STA $82
ac51: b9 6e 9f     LDA $9f6e,Y
ac54: 85 83        STA $83
ac56: 60           RTS

; Swap the warriors in slots $88 and $89, along with the tags
ac57: a5 88        LDA $88
ac59: a6 89        LDX $89
ac5b: 20 23 ac     JSR $ac23
ac5e: 20 80 ac     JSR $ac80
ac61: a5 88        LDA $88
ac63: a6 89        LDX $89
ac65: 20 3d ac     JSR $ac3d
ac68: 20 80 ac     JSR $ac80
ac6b: a5 88        LDA $88
ac6d: a8           TAY
ac6e: a5 89        LDA $89
ac70: aa           TAX
ac71: b9 9f 68     LDA $689f,Y
ac74: 48           PHA
ac75: bd 9f 68     LDA $689f,X
ac78: 99 9f 68     STA $689f,Y
ac7b: 68           PLA
ac7c: 9d 9f 68     STA $689f,X
ac7f: 60           RTS

ac80: a0 00        LDY #$00
ac82: b1 82        LDA ($82),Y
ac84: 48           PHA
ac85: b1 80        LDA ($80),Y
ac87: 91 82        STA ($82),Y
ac89: 68           PLA
ac8a: 91 80        STA ($80),Y
ac8c: c8           INY
ac8d: c0 40        CPY #$40
ac8f: d0 f1        BNE +$f1  [$ac82]
ac91: 60           RTS

; Status priorities, lowest number goes on top
ac92: 00 40 20 10

; Rearrange warriors based on statuses
ac96: a2 00        LDX #$00     ;; Tag each warrior with (index + prio above)
ac98: 8a           TXA
ac99: 0a           ASL
ac9a: 0a           ASL
ac9b: 0a           ASL
ac9c: 0a           ASL
ac9d: 0a           ASL
ac9e: 0a           ASL
ac9f: a8           TAY
aca0: b9 01 61     LDA $6101,Y
aca3: 29 03        AND #$03
aca5: a8           TAY
aca6: 8a           TXA
aca7: 18           CLC
aca8: 79 92 ac     ADC $ac92,Y
acab: 9d 9f 68     STA $689f,X
acae: e8           INX
acaf: e0 04        CPX #$04
acb1: d0 e5        BNE +$e5  [$ac98]
acb3: 86 8a        STX $8a     ;; Bubble sort based on the "tags" now
acb5: a9 00        LDA #$00
acb7: 85 8b        STA $8b
acb9: a4 8b        LDY $8b
acbb: b9 9f 68     LDA $689f,Y
acbe: d9 a0 68     CMP $68a0,Y
acc1: 90 11        BCC +$11  [$acd4]
acc3: b9 9f 68     LDA $689f,Y  ;; BUG: swaps the original slots rather than the current slots
acc6: 29 03        AND #$03
acc8: 85 88        STA $88
acca: b9 a0 68     LDA $68a0,Y
accd: 29 03        AND #$03
accf: 85 89        STA $89
acd1: 20 57 ac     JSR $ac57   ; Swap the warriors in slots $88 and $89, along with the tags
acd4: e6 8b        INC $8b
acd6: a5 8b        LDA $8b
acd8: c9 03        CMP #$03
acda: d0 dd        BNE +$dd  [$acb9]
acdc: c6 8a        DEC $8a
acde: d0 d5        BNE +$d5  [$acb5]
ace0: 60           RTS

;FIX { START weapon bug patch:
;       replace this code with the contents of warrior-weapon-patch.txt
;       Also, the JSR at $9321 needs to be changed

; Copy a byte from p[$82],Y to p[$80],A
ace1: 48           PHA
ace2: b1 82        LDA ($82),Y
ace4: aa           TAX
ace5: 68           PLA
ace6: a8           TAY
ace7: 8a           TXA
ace8: 91 80        STA ($80),Y
acea: 60           RTS

; Initialize players in-battle structs
aceb: a9 00        LDA #$00
aced: 20 ff ac     JSR $acff   ; Initialize player A for battle
acf0: a9 01        LDA #$01
acf2: 20 ff ac     JSR $acff   ; Initialize player A for battle
acf5: a9 02        LDA #$02
acf7: 20 ff ac     JSR $acff   ; Initialize player A for battle
acfa: a9 03        LDA #$03
acfc: 4c ff ac     JMP $acff   ; Initialize player A for battle

; Initialize player A for battle
acff: 8d b3 68     STA $68b3
ad02: 20 45 a1     JSR $a145   ; Warrior A structs: p[$82]=permanent, p[$80]=in-battle
ad05: a0 00        LDY #$00    ; Save palette into palette area
ad07: b1 82        LDA ($82),Y
ad09: a8           TAY
ad0a: b9 3c a0     LDA $a03c,Y
ad0d: ac b3 68     LDY $68b3
ad10: 99 a8 6b     STA $6ba8,Y
ad13: ad b3 68     LDA $68b3   ; save player index
ad16: a0 00        LDY #$00
ad18: 91 80        STA ($80),Y
ad1a: a0 00        LDY #$00    ; class
ad1c: a9 01        LDA #$01
ad1e: 20 e1 ac     JSR $ace1
ad21: a0 01        LDY #$01    ; status
ad23: a9 02        LDA #$02
ad25: 20 e1 ac     JSR $ace1
ad28: a0 0a        LDY #$0a    ; HP
ad2a: a9 03        LDA #$03
ad2c: 20 e1 ac     JSR $ace1
ad2f: a0 0b        LDY #$0b
ad31: a9 04        LDA #$04
ad33: 20 e1 ac     JSR $ace1
ad36: a0 21        LDY #$21    ; hit %
ad38: a9 05        LDA #$05
ad3a: 20 e1 ac     JSR $ace1
ad3d: a0 25        LDY #$25    ; mag def
ad3f: a9 06        LDA #$06
ad41: 20 e1 ac     JSR $ace1
ad44: a0 23        LDY #$23    ; evade
ad46: a9 07        LDA #$07
ad48: 20 e1 ac     JSR $ace1
ad4b: a0 22        LDY #$22    ; absorb
ad4d: a9 08        LDA #$08
ad4f: 20 e1 ac     JSR $ace1
ad52: a0 20        LDY #$20    ; damage
ad54: a9 09        LDA #$09
ad56: 20 e1 ac     JSR $ace1
ad59: a0 24        LDY #$24    ; elemental resistance
ad5b: a9 0a        LDA #$0a
ad5d: 20 e1 ac     JSR $ace1
ad60: a9 01        LDA #$01    ; hit multiplier = 1
ad62: a0 0b        LDY #$0b
ad64: 91 80        STA ($80),Y
ad66: a0 21        LDY #$21    ; number of hits = (hit%>>5) + 1
ad68: b1 82        LDA ($82),Y
ad6a: 4a           LSR
ad6b: 4a           LSR
ad6c: 4a           LSR
ad6d: 4a           LSR
ad6e: 4a           LSR
ad6f: 18           CLC
ad70: 69 01        ADC #$01
ad72: a0 0c        LDY #$0c
ad74: 91 80        STA ($80),Y
ad76: a9 00        LDA #$00    ; default weapon category = 0
ad78: a0 0d        LDY #$0d    ;  BUG: never overridden
ad7a: 91 80        STA ($80),Y
ad7c: a0 0e        LDY #$0e    ; default weapon element = 0
ad7e: 91 80        STA ($80),Y ;  BUG: never overridden
ad80: a0 18        LDY #$18   ; find equipped weapon
ad82: b1 82        LDA ($82),Y
ad84: 30 11        BMI +$11  [$ad97]
ad86: c8           INY
ad87: b1 82        LDA ($82),Y
ad89: 30 0c        BMI +$0c  [$ad97]
ad8b: c8           INY
ad8c: b1 82        LDA ($82),Y
ad8e: 30 07        BMI +$07  [$ad97]
ad90: c8           INY
ad91: b1 82        LDA ($82),Y
ad93: 30 02        BMI +$02  [$ad97]
ad95: a9 00        LDA #$00
ad97: a0 0f        LDY #$0f
ad99: 29 7f        AND #$7f
ad9b: 91 80        STA ($80),Y  ; BUG: critical% = weapon index + 1
ad9d: 29 ff        AND #$ff
ad9f: f0 16        BEQ +$16  [$adb7]
ada1: 38           SEC
ada2: e9 01        SBC #$01
ada4: 20 05 ac     JSR $ac05   ; p[$88] = pointer to data for weapon A
ada7: 85 88        STA $88
ada9: 86 89        STX $89
;FIX  END weapon bug patch }
adab: a0 07        LDY #$07    ; weapon Palette
adad: b1 88        LDA ($88),Y
adaf: a0 11        LDY #$11
adb1: 91 80        STA ($80),Y
adb3: a0 06        LDY #$06    ; weapon GFX
adb5: b1 88        LDA ($88),Y
adb7: a0 10        LDY #$10
adb9: 91 80        STA ($80),Y
adbb: a0 00        LDY #$00    ; BB/Ma bare handed weapon Pal/GFX
adbd: b1 82        LDA ($82),Y ;  and critical% = level*2
adbf: c9 02        CMP #$02    ;  and #hits *= 2
adc1: f0 04        BEQ +$04  [$adc7]
adc3: c9 08        CMP #$08
adc5: d0 22        BNE +$22  [$ade9]
adc7: a0 10        LDY #$10
adc9: b1 80        LDA ($80),Y
adcb: d0 1c        BNE +$1c  [$ade9]
adcd: a9 ac        LDA #$ac
adcf: a0 10        LDY #$10
add1: 91 80        STA ($80),Y
add3: a9 28        LDA #$28
add5: a0 11        LDY #$11
add7: 91 80        STA ($80),Y
add9: a0 26        LDY #$26
addb: b1 82        LDA ($82),Y
addd: 0a           ASL
adde: a0 0f        LDY #$0f
ade0: 91 80        STA ($80),Y
ade2: a0 0c        LDY #$0c
ade4: b1 80        LDA ($80),Y
ade6: 0a           ASL
ade7: 91 80        STA ($80),Y
ade9: 60           RTS

; CMP w[Y] >= w[X] (sets flags NC, clear others)
adea: 20 5d af     JSR $af5d   ; X<<=1, Y<<=1
aded: b9 57 68     LDA $6857,Y
adf0: dd 57 68     CMP $6857,X
adf3: f0 07        BEQ +$07  [$adfc]
adf5: 08           PHP
adf6: 68           PLA
adf7: 29 81        AND #$81
adf9: 48           PHA
adfa: 28           PLP
adfb: 60           RTS
adfc: b9 56 68     LDA $6856,Y
adff: dd 56 68     CMP $6856,X
ae02: 08           PHP
ae03: 68           PLA
ae04: 29 01        AND #$01
ae06: 48           PHA
ae07: 28           PLP
ae08: 60           RTS

; XA = X*A
ae09: 8d b3 68     STA $68b3
ae0c: 8e b4 68     STX $68b4
ae0f: a2 08        LDX #$08
ae11: a9 00        LDA #$00
ae13: 8d b5 68     STA $68b5
ae16: 4e b3 68     LSR $68b3
ae19: 90 04        BCC +$04  [$ae1f]
ae1b: 18           CLC
ae1c: 6d b4 68     ADC $68b4
ae1f: 6a           ROR
ae20: 6e b5 68     ROR $68b5
ae23: ca           DEX
ae24: d0 f0        BNE +$f0  [$ae16]
ae26: aa           TAX
ae27: ad b5 68     LDA $68b5
ae2a: 60           RTS

; w[$688b] /= $688d, $688d = w[$688b] % $688d
ae2b: 8a           TXA
ae2c: 48           PHA
ae2d: a9 00        LDA #$00
ae2f: 8d b3 68     STA $68b3
ae32: a2 10        LDX #$10
ae34: 2e 8b 68     ROL $688b
ae37: 2e 8c 68     ROL $688c
ae3a: 2e b3 68     ROL $68b3
ae3d: ad b3 68     LDA $68b3
ae40: cd 8d 68     CMP $688d
ae43: 90 06        BCC +$06  [$ae4b]
ae45: ed 8d 68     SBC $688d
ae48: 8d b3 68     STA $68b3
ae4b: 2e 8b 68     ROL $688b
ae4e: 2e 8c 68     ROL $688c
ae51: ca           DEX
ae52: d0 e6        BNE +$e6  [$ae3a]
ae54: ad b3 68     LDA $68b3
ae57: 8d 8d 68     STA $688d
ae5a: 68           PLA
ae5b: aa           TAX
ae5c: 60           RTS

; A = RND (A .. X)
ae5d: 8d af 68     STA $68af
ae60: e8           INX
ae61: 8e b0 68     STX $68b0
ae64: 8a           TXA
ae65: 38           SEC
ae66: ed af 68     SBC $68af
ae69: 8d b6 68     STA $68b6
ae6c: 20 27 f2     JSR $f227   ; A = RND (0 .. 255) ??
ae6f: ae b6 68     LDX $68b6
ae72: 20 09 ae     JSR $ae09   ; XA = X*A
ae75: 8a           TXA
ae76: 18           CLC
ae77: 6d af 68     ADC $68af
ae7a: 60           RTS

; w[A] = clamp(w[X] + w[Y])
ae7b: 48           PHA
ae7c: 20 5d af     JSR $af5d   ; X<<=1, Y<<=1
ae7f: b9 56 68     LDA $6856,Y
ae82: 18           CLC
ae83: 7d 56 68     ADC $6856,X
ae86: 8d cf 6b     STA $6bcf
ae89: b9 57 68     LDA $6857,Y
ae8c: 7d 57 68     ADC $6857,X
ae8f: 8d d0 6b     STA $6bd0
ae92: 90 08        BCC +$08  [$ae9c]
ae94: a9 ff        LDA #$ff
ae96: 8d cf 6b     STA $6bcf
ae99: 8d d0 6b     STA $6bd0
ae9c: 68           PLA
ae9d: 0a           ASL
ae9e: aa           TAX
ae9f: ad cf 6b     LDA $6bcf
aea2: 9d 56 68     STA $6856,X
aea5: ad d0 6b     LDA $6bd0
aea8: 9d 57 68     STA $6857,X
aeab: 60           RTS

; w[A] = clamp(w[X] - w[Y])
aeac: 48           PHA
aead: 20 5d af     JSR $af5d   ; X<<=1, Y<<=1
aeb0: bd 56 68     LDA $6856,X
aeb3: 38           SEC
aeb4: f9 56 68     SBC $6856,Y
aeb7: 8d cf 6b     STA $6bcf
aeba: bd 57 68     LDA $6857,X
aebd: f9 57 68     SBC $6857,Y
aec0: 8d d0 6b     STA $6bd0
aec3: b0 08        BCS +$08  [$aecd]
aec5: a9 00        LDA #$00
aec7: 8d cf 6b     STA $6bcf
aeca: 8d d0 6b     STA $6bd0
aecd: 68           PLA
aece: 0a           ASL
aecf: aa           TAX
aed0: ad cf 6b     LDA $6bcf
aed3: 9d 56 68     STA $6856,X
aed6: ad d0 6b     LDA $6bd0
aed9: 9d 57 68     STA $6857,X
aedc: 60           RTS

; w[A] = clamp(w[A] + X)
aedd: 8d cf 6b     STA $6bcf
aee0: 48           PHA
aee1: 8a           TXA
aee2: 48           PHA
aee3: 98           TYA
aee4: 48           PHA
aee5: ad cf 6b     LDA $6bcf
aee8: 0a           ASL
aee9: a8           TAY
aeea: 8a           TXA
aeeb: 18           CLC
aeec: 79 56 68     ADC $6856,Y
aeef: 99 56 68     STA $6856,Y
aef2: a9 00        LDA #$00
aef4: 79 57 68     ADC $6857,Y
aef7: 99 57 68     STA $6857,Y
aefa: 90 08        BCC +$08  [$af04]
aefc: a9 ff        LDA #$ff
aefe: 99 56 68     STA $6856,Y
af01: 99 57 68     STA $6857,Y
af04: 68           PLA
af05: a8           TAY
af06: 68           PLA
af07: aa           TAX
af08: 68           PLA
af09: 60           RTS

; w[A] = clamp(w[A] - X)
af0a: 8d cf 6b     STA $6bcf
af0d: 48           PHA
af0e: 8a           TXA
af0f: 48           PHA
af10: 98           TYA
af11: 48           PHA
af12: ad cf 6b     LDA $6bcf
af15: 0a           ASL
af16: a8           TAY
af17: 8e cf 6b     STX $6bcf
af1a: 38           SEC
af1b: b9 56 68     LDA $6856,Y
af1e: ed cf 6b     SBC $6bcf
af21: 99 56 68     STA $6856,Y
af24: b9 57 68     LDA $6857,Y
af27: e9 00        SBC #$00
af29: 99 57 68     STA $6857,Y
af2c: b0 08        BCS +$08  [$af36]
af2e: a9 00        LDA #$00
af30: 99 56 68     STA $6856,Y
af33: 99 57 68     STA $6857,Y
af36: 68           PLA
af37: a8           TAY
af38: 68           PLA
af39: aa           TAX
af3a: 68           PLA
af3b: 60           RTS

; w[A]<=0 (sets flags NZ)
af3c: 0a           ASL
af3d: a8           TAY
af3e: b9 57 68     LDA $6857,Y
af41: d0 09        BNE +$09  [$af4c]
af43: b9 56 68     LDA $6856,Y
af46: 08           PHP
af47: 68           PLA
af48: 29 7f        AND #$7f
af4a: 48           PHA
af4b: 28           PLP
af4c: 60           RTS

; w[Y] = w[X]
af4d: 20 5d af     JSR $af5d   ; X<<=1, Y<<=1
af50: bd 56 68     LDA $6856,X
af53: 99 56 68     STA $6856,Y
af56: bd 57 68     LDA $6857,X
af59: 99 57 68     STA $6857,Y
af5c: 60           RTS

; X<<=1, Y<<=1
af5d: 8a           TXA
af5e: 0a           ASL
af5f: aa           TAX
af60: 98           TYA
af61: 0a           ASL
af62: a8           TAY
af63: 60           RTS

; Initialize monsters for battle
af64: ad 93 6c     LDA $6c93
af67: a9 09        LDA #$09
af69: 8d d1 6b     STA $6bd1
af6c: a9 00        LDA #$00
af6e: 8d d2 6b     STA $6bd2
af71: ad d2 6b     LDA $6bd2
af74: 20 86 bb     JSR $bb86   ; XA = address of in-RAM struct for slot A
af77: 85 9a        STA $9a     ; store as p[$9a]
af79: 86 9b        STX $9b
af7b: ae d2 6b     LDX $6bd2
af7e: 20 c6 bb     JSR $bbc6   ; A=monster type in slot X, set Z flag if no monster
af81: d0 03        BNE +$03  [$af86]
af83: 4c fe af     JMP $affe
af86: a2 14        LDX #$14    ;;; Get pointer for in-ROM data for monster in A
af88: 20 09 ae     JSR $ae09   ; XA = X*A
af8b: 18           CLC
af8c: 69 20        ADC #$20    ; XA += #$8520
af8e: 85 9c        STA $9c     ; and store in p[$9c] and in-RAM[0]
af90: a0 00        LDY #$00
af92: 91 9a        STA ($9a),Y
af94: 8a           TXA
af95: 69 85        ADC #$85
af97: 85 9d        STA $9d
af99: a0 01        LDY #$01
af9b: 91 9a        STA ($9a),Y
af9d: a9 00        LDA #$00 ; Set up in-RAM monster struct in p[$9a] from p[$9c]
af9f: 8d 8e 6c     STA $6c8e
afa2: 20 af af     JSR $afaf
afa5: ad 8e 6c     LDA $6c8e
afa8: c9 18        CMP #$18
afaa: d0 f6        BNE +$f6  [$afa2]
afac: 4c e3 af     JMP $afe3
afaf: 20 c4 af     JSR $afc4   ; copy one byte from p[$9c] to p[$9a] using the
afb2: bd cb af     LDA $afcb,X ; table below
afb5: a8           TAY
afb6: b1 9c        LDA ($9c),Y
afb8: 48           PHA
afb9: 20 c4 af     JSR $afc4
afbc: bd cb af     LDA $afcb,X
afbf: a8           TAY
afc0: 68           PLA
afc1: 91 9a        STA ($9a),Y
afc3: 60           RTS
afc4: ae 8e 6c     LDX $6c8e
afc7: ee 8e 6c     INC $6c8e
afca: 60           RTS

; Table for setting up monster in-RAM struct
afcb: 04 02 05 03  .DB $04, $02, $05, $03  ; MaxHP -> HP
afcf: 09 04        .DB $09, $04            ; Absorb
afd1: 06 09        .DB $06, $09            ; "Courage"
afd3: 08 0a        .DB $08, $0a            ; Evade %
afd5: 0c 0b        .DB $0c, $0b            ; Damage
afd7: 07 0c        .DB $07, $0c            ; AI (bug?)
afd9: 00 0d 01 0e  .DB $00, $0d, $01, $0e  ; Exp
afdd: 02 0f 03 10  .DB $02, $0f, $03, $10  ; Gold
afe1: 04 12        .DB $04, $12            ; MaxHP low byte -> sleep healing (bug?)

afe3: a0 05        LDY #$05      ; Finish it by storing 1 in hit multiplier,
afe5: a9 01        LDA #$01
afe7: 91 9a        STA ($9a),Y
afe9: c8           INY
afea: a9 00        LDA #$00      ; 0 in statuses,
afec: 91 9a        STA ($9a),Y
afee: c8           INY
afef: 91 9a        STA ($9a),Y   ; AI magic index,
aff1: c8           INY
aff2: 91 9a        STA ($9a),Y   ; AI special attack index,
aff4: ae d2 6b     LDX $6bd2
aff7: bd b7 6b     LDA $6bb7,X   ; and monster type in the monster type
affa: a0 11        LDY #$11
affc: 91 9a        STA ($9a),Y
affe: ee d2 6b     INC $6bd2
b001: ce d1 6b     DEC $6bd1
b004: f0 03        BEQ +$03  [$b009]
b006: 4c 71 af     JMP $af71
b009: 4c 8a 97     JMP $978a   ; Enable screen

b00c: 48           PHA
b00d: 8a           TXA
b00e: 48           PHA
b00f: a2 04        LDX #$04
b011: a9 00        LDA #$00
b013: 8d 8b 6c     STA $6c8b
b016: 9d 14 6d     STA $6d14,X
b019: e8           INX
b01a: e0 20        CPX #$20
b01c: d0 f8        BNE +$f8  [$b016]
b01e: 68           PLA
b01f: aa           TAX
b020: 68           PLA
b021: 60           RTS

b022: 48           PHA
b023: 8a           TXA
b024: 48           PHA
b025: 98           TYA
b026: 48           PHA
b027: ad 8b 6c     LDA $6c8b
b02a: f0 05        BEQ +$05  [$b031]
b02c: 30 03        BMI +$03  [$b031]
b02e: 20 0f f2     JSR $f20f
b031: a9 00        LDA #$00
b033: 8d 8b 6c     STA $6c8b
b036: 20 0c b0     JSR $b00c
b039: 20 e6 a0     JSR $a0e6  ; Respond rate delay
b03c: 68           PLA
b03d: a8           TAY
b03e: 68           PLA
b03f: aa           TAX
b040: 68           PLA
b041: 60           RTS

b042: 48           PHA
b043: 8a           TXA
b044: 48           PHA
b045: 98           TYA
b046: 48           PHA
b047: 20 e6 a0     JSR $a0e6  ; Respond rate delay
b04a: ad 8b 6c     LDA $6c8b
b04d: c9 03        CMP #$03
b04f: 90 0a        BCC +$0a  [$b05b]
b051: a9 01        LDA #$01
b053: 20 0f f2     JSR $f20f
b056: ce 8b 6c     DEC $6c8b
b059: d0 ef        BNE +$ef  [$b04a]
b05b: 4c 3c b0     JMP $b03c

; Draw attacker name
b05e: 48           PHA
b05f: 8a           TXA
b060: 48           PHA
b061: 98           TYA
b062: 48           PHA
b063: a9 02        LDA #$02
b065: 8d 2c 6d     STA $6d2c
b068: a2 2c        LDX #$2c
b06a: a0 6d        LDY #$6d
b06c: ee 8b 6c     INC $6c8b
b06f: a9 00        LDA #$00
b071: 4c c7 b0     JMP $b0c7

; Draw spell name
b074: 48           PHA
b075: 8a           TXA
b076: 48           PHA
b077: 98           TYA
b078: 48           PHA
b079: ad 8f 6c     LDA $6c8f
b07c: d0 0d        BNE +$0d  [$b08b]
b07e: ad 8c 6c     LDA $6c8c
b081: c9 42        CMP #$42
b083: b0 03        BCS +$03  [$b088]
b085: 18           CLC
b086: 69 b0        ADC #$b0
b088: 4c a0 b0     JMP $b0a0
b08b: c9 01        CMP #$01
b08d: d0 08        BNE +$08  [$b097]
b08f: ad 8c 6c     LDA $6c8c
b092: 38           SEC
b093: e9 27        SBC #$27
b095: d0 09        BNE +$09  [$b0a0]
b097: ad 89 6c     LDA $6c89
b09a: 29 03        AND #$03
b09c: aa           TAX
b09d: bd 9f 68     LDA $689f,X
b0a0: 8d 25 6d     STA $6d25
b0a3: a9 0e        LDA #$0e
b0a5: 8d 24 6d     STA $6d24
b0a8: a2 24        LDX #$24
b0aa: a0 6d        LDY #$6d
b0ac: ee 8b 6c     INC $6c8b
b0af: a9 01        LDA #$01
b0b1: 4c c7 b0     JMP $b0c7

b0b4: 48           PHA
b0b5: 8a           TXA
b0b6: 48           PHA
b0b7: 98           TYA
b0b8: 48           PHA
b0b9: a9 03        LDA #$03
b0bb: 8d 22 6d     STA $6d22
b0be: a2 22        LDX #$22
b0c0: a0 6d        LDY #$6d
b0c2: ee 8b 6c     INC $6c8b
b0c5: a9 02        LDA #$02
b0c7: 20 18 f2     JSR $f218
b0ca: 4c 3c b0     JMP $b03c

b0cd: 48           PHA
b0ce: 8a           TXA
b0cf: 48           PHA
b0d0: 98           TYA
b0d1: 48           PHA
b0d2: a2 06        LDX #$06
b0d4: a0 00        LDY #$00
b0d6: b9 ec b0     LDA $b0ec,Y
b0d9: 99 1c 6d     STA $6d1c,Y
b0dc: c8           INY
b0dd: ca           DEX
b0de: d0 f6        BNE +$f6  [$b0d6]
b0e0: a2 1c        LDX #$1c
b0e2: a0 6d        LDY #$6d
b0e4: ee 8b 6c     INC $6c8b
b0e7: a9 03        LDA #$03
b0e9: 4c c7 b0     JMP $b0c7

b0ec: 0c 58 68 0f  .DB $0C, $58, $68, $0F
b0f0: 2e 00        .DB $2E, $00

b0f2: 48           PHA
b0f3: 8d cf 6b     STA $6bcf
b0f6: 8a           TXA
b0f7: 48           PHA
b0f8: 98           TYA
b0f9: 48           PHA
b0fa: a9 0f        LDA #$0f
b0fc: 8d 19 6d     STA $6d19
b0ff: ae cf 6b     LDX $6bcf
b102: bd 27 b1     LDA $b127,X
b105: ae 8a 6c     LDX $6c8a
b108: 10 06        BPL +$06  [$b110]
b10a: c9 1a        CMP #$1a
b10c: d0 02        BNE +$02  [$b110]
b10e: a9 2f        LDA #$2f
b110: 8d 1a 6d     STA $6d1a
b113: a2 19        LDX #$19
b115: a0 6d        LDY #$6d
b117: a9 04        LDA #$04
b119: 20 18 f2     JSR $f218
b11c: 20 e6 a0     JSR $a0e6  ; Respond rate delay
b11f: a9 01        LDA #$01
b121: 20 0f f2     JSR $f20f
b124: 4c 3c b0     JMP $b03c

b127: 25 2a 28 07  .DB $25, $2a, $28, $07
b12b: 21 13 07 04  .DB $21, $13, $07, $04
b12f: 17 09 14 1a  .DB $17, $09, $14, $1a
b133: 3f 29 11 27  .DB $3f, $29, $11, $27
b137: 29 06 0e 4a  .DB $29, $06, $0e, $4a
b13b: 20           .DB $20

b13d: 48           PHA
b13e: 8a           TXA
b13f: 48           PHA
b140: 98           TYA
b141: 48           PHA
b142: ad 5c 68     LDA $685c
b145: d0 06        BNE +$06  [$b14d]
b147: 20 94 b8     JSR $b894   ; Display "Ineffective" message
b14a: 4c 8d b1     JMP $b18d
b14d: ad 8c 6c     LDA $6c8c
b150: c9 42        CMP #$42
b152: 90 06        BCC +$06  [$b15a]
b154: 20 e6 a0     JSR $a0e6  ; Respond rate delay
b157: 4c 8d b1     JMP $b18d
b15a: ae 8c 6c     LDX $6c8c
b15d: e0 40        CPX #$40
b15f: 90 08        BCC +$08  [$b169]
b161: e0 40        CPX #$40
b163: d0 25        BNE +$25  [$b18a]
b165: a9 01        LDA #$01
b167: d0 05        BNE +$05  [$b16e]
b169: bd c0 84     LDA $84c0,X
b16c: f0 1c        BEQ +$1c  [$b18a]
b16e: 8d 1a 6d     STA $6d1a
b171: a9 0f        LDA #$0f
b173: 8d 19 6d     STA $6d19
b176: a2 19        LDX #$19
b178: a0 6d        LDY #$6d
b17a: a9 04        LDA #$04
b17c: 20 18 f2     JSR $f218
b17f: 20 e6 a0     JSR $a0e6  ; Respond rate delay
b182: a9 01        LDA #$01
b184: 20 0f f2     JSR $f20f
b187: 4c 3c b0     JMP $b03c
b18a: 20 e6 a0     JSR $a0e6  ; Respond rate delay
b18d: 4c 3c b0     JMP $b03c

; AND enemy status with A
b190: a0 06        LDY #$06
b192: 31 9a        AND ($9a),Y
b194: 91 9a        STA ($9a),Y
b196: 60           RTS

;; Enemy battle action
b197: 8d 89 6c     STA $6c89
b19a: 8d cd 6b     STA $6bcd
b19d: 20 86 bb     JSR $bb86   ; XA = address of in-RAM struct for slot A
b1a0: 85 9a        STA $9a     ; p[$9a]=in-RAM struct for attacker
b1a2: 86 9b        STX $9b
;FIX { START enemy sleep patch
;       replace this code with the contents of enemy-sleep-patch.txt
b1a4: a9 02        LDA #$02
b1a6: 8d a7 6d     STA $6da7
b1a9: 20 0c b0     JSR $b00c
b1ac: a9 00        LDA #$00
b1ae: 8d 8f 6c     STA $6c8f
b1b1: a0 06        LDY #$06    ; is this enemy asleep/paralyzed?
b1b3: b1 9a        LDA ($9a),Y
b1b5: 29 30        AND #$30
b1b7: f0 48        BEQ +$48  [$b201]
b1b9: 20 5e b0     JSR $b05e   ; Draw attacker name
b1bc: 29 20        AND #$20
b1be: d0 14        BNE +$14  [$b1d4]
b1c0: 20 27 f2     JSR $f227   ;; Try to cure stop  ; A = RND (0 .. 255) ??
b1c3: c9 19        CMP #$19    ; 9.8% chance?
b1c5: b0 09        BCS +$09  [$b1d0]
b1c7: a9 ef        LDA #$ef
b1c9: 20 90 b1     JSR $b190   ; AND enemy status with A
b1cc: a9 10        LDA #$10    ; cured message?
b1ce: d0 2e        BNE +$2e  [$b1fe]
b1d0: a9 01        LDA #$01    ; not cured message?
b1d2: d0 2a        BNE +$2a  [$b1fe]
b1d4: a0 12        LDY #$12    ;; Try to cure sleep (BUGgy)
b1d6: b1 9a        LDA ($9a),Y ; Load MaxHP from RAM (why not ROM?)
b1d8: 8d 56 68     STA $6856
b1db: c8           INY
b1dc: b1 9a        LDA ($9a),Y
b1de: 8d 57 68     STA $6857
b1e1: a9 00        LDA #$00
b1e3: a2 50        LDX #$50
b1e5: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
b1e8: aa           TAX
b1e9: a9 01        LDA #$01    ; BUG wrong word?
b1eb: 20 0a af     JSR $af0a   ; w[A] = clamp(w[A] - X)
b1ee: ad 57 68     LDA $6857
b1f1: 30 09        BMI +$09  [$b1fc]  ; BUG: since $af0a clamps, BMI never branches
b1f3: a9 df        LDA #$df
b1f5: 20 90 b1     JSR $b190   ; AND enemy status with A
b1f8: a9 0f        LDA #$0f    ; cured message?
b1fa: d0 02        BNE +$02  [$b1fe]
b1fc: a9 02        LDA #$02    ; not cured message?
b1fe: 4c 8e b2     JMP $b28e   ; Display message in A and close window?
b201: a0 06        LDY #$06    ;; is CONFed?
b203: b1 9a        LDA ($9a),Y
b205: 10 24        BPL +$24  [$b22b]
b207: 20 27 f2     JSR $f227   ; A = RND (0 .. 255) ??
b20a: c9 40        CMP #$40    ; 25% chance of curing CONF
b20c: b0 0c        BCS +$0c  [$b21a]
b20e: a9 7f        LDA #$7f
b210: 20 90 b1     JSR $b190   ; AND enemy status with A
b213: 20 5e b0     JSR $b05e   ; Draw attacker name
b216: a9 0d        LDA #$0d    ; cured message?
b218: d0 e4        BNE +$e4  [$b1fe] ; go display message and return

;; CONFed attack
b21a: 20 5e b0     JSR $b05e   ; Draw attacker name
b21d: a9 04        LDA #$04    ; WTF? All CONFed enemies cast FIRE?
b21f: 8d 8c 6c     STA $6c8c
b222: 20 5c b3     JSR $b35c   ; p[$98]=spell in $6c8c and load spell data
b225: 20 4d b5     JSR $b54d   ; Enemy target one enemy with magic
b228: 4c 22 b0     JMP $b022   ; BUG: Never sets appropriate flags so it never checks of the enemy is dead!
;FIX: 4c 0e b5     JMP $b50e

;; non-CONF enemy logic
b22b: a0 00        LDY #$00    ; p[$9c]=in-ROM data for p[$9a]
b22d: b1 9a        LDA ($9a),Y
b22f: 85 9c        STA $9c
b231: c8           INY
b232: b1 9a        LDA ($9a),Y
b234: 85 9d        STA $9d
;FIX  END enemy sleep patch }
b236: ad 26 61     LDA $6126   ;; run chance = "courage" - 1st warrior level*2
b239: 0a           ASL         ;; run if chance<0 or chance+[0..50]<80
b23a: 85 9e        STA $9e
b23c: a0 09        LDY #$09    ; "courage"
b23e: b1 9a        LDA ($9a),Y
b240: 38           SEC
b241: e5 9e        SBC $9e
b243: 90 12        BCC +$12  [$b257]
b245: 85 9e        STA $9e
b247: a9 00        LDA #$00
b249: a2 32        LDX #$32
b24b: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
b24e: 18           CLC
b24f: 65 9e        ADC $9e
b251: b0 4f        BCS +$4f  [$b2a2]
b253: c9 50        CMP #$50
b255: b0 4b        BCS +$4b  [$b2a2]
b257: 20 5e b0     JSR $b05e   ; Draw attacker name
b25a: a9 00        LDA #$00    ; "run away"?
b25c: 20 f2 b0     JSR $b0f2   ; Display message indicated in A
b25f: 20 3d b5     JSR $b53d
b262: 8d 85 68     STA $6885   ; target index?
b265: 20 ee bb     JSR $bbee   ; do attack sparkles
b268: a9 01        LDA #$01
b26a: 8d 89 68     STA $6889   ; target status
b26d: a0 06        LDY #$06    ; set dead status
b26f: 91 9a        STA ($9a),Y
b271: a9 00        LDA #$00
b273: 8d 87 68     STA $6887   ; attacker type (0=player, 1=monster)
b276: a0 0d        LDY #$0d    ; set exp=0 and gold=0
b278: 91 9a        STA ($9a),Y
b27a: c8           INY
b27b: c0 11        CPY #$11
b27d: d0 f9        BNE +$f9  [$b278]
b27f: ae 89 6c     LDX $6c89
b282: 20 88 b2     JSR $b288   ; Clear monster slot
b285: 4c 22 b0     JMP $b022

; Clear monster slot
b288: a9 ff        LDA #$ff
b28a: 9d b7 6b     STA $6bb7,X   ; monster type in this slot
b28d: 60           RTS

b28e: 20 f2 b0     JSR $b0f2   ; Display message indicated in A
b291: 4c 22 b0     JMP $b022

; A=RND(0..128) and compare to input A
b294: 8d cf 6b     STA $6bcf
b297: a9 00        LDA #$00
b299: a2 80        LDX #$80
b29b: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
b29e: cd cf 6b     CMP $6bcf
b2a1: 60           RTS

; Enemy choose attack
b2a2: a9 00        LDA #$00
b2a4: 85 9f        STA $9f
b2a6: a0 07        LDY #$07    ; AI
b2a8: b1 9c        LDA ($9c),Y
b2aa: c9 ff        CMP #$ff
b2ac: d0 03        BNE +$03  [$b2b1]
b2ae: 4c 19 b3     JMP $b319
b2b1: a2 10        LDX #$10    ;; p[$9e]=enemy AI data
b2b3: 20 09 ae     JSR $ae09   ; XA = X*A
b2b6: 18           CLC
b2b7: 69 20        ADC #$20
b2b9: 85 9e        STA $9e
b2bb: 8a           TXA
b2bc: 69 90        ADC #$90
b2be: 85 9f        STA $9f
b2c0: a0 00        LDY #$00    ; If roll<chance-of-magic, do magic
b2c2: b1 9e        LDA ($9e),Y
b2c4: 20 94 b2     JSR $b294   ; A=RND(0..128) and compare to input A
b2c7: b0 26        BCS +$26  [$b2ef]
b2c9: a0 07        LDY #$07    ; AI magic index
b2cb: b1 9a        LDA ($9a),Y
b2cd: 29 07        AND #$07
b2cf: 20 e7 b2     JSR $b2e7   ; (p[$9a],Y)=A+1
b2d2: 69 02        ADC #$02    ; load spell number, loop when $ff is found
b2d4: a8           TAY
b2d5: b1 9e        LDA ($9e),Y
b2d7: c9 ff        CMP #$ff
b2d9: d0 09        BNE +$09  [$b2e4]
b2db: a9 00        LDA #$00
b2dd: a0 07        LDY #$07
b2df: 91 9a        STA ($9a),Y
b2e1: 4c c9 b2     JMP $b2c9
b2e4: 4c d5 b4     JMP $b4d5   ; Do enemy cast magic
b2e7: 48           PHA
b2e8: 18           CLC
b2e9: 69 01        ADC #$01
b2eb: 91 9a        STA ($9a),Y
b2ed: 68           PLA
b2ee: 60           RTS
b2ef: a0 01        LDY #$01    ; If roll<chance-of-special, do special
b2f1: b1 9e        LDA ($9e),Y
b2f3: 20 94 b2     JSR $b294   ; A=RND(0..128) and compare to input A
b2f6: b0 21        BCS +$21  [$b319]
b2f8: a0 08        LDY #$08    ; AI special rotation
b2fa: b1 9a        LDA ($9a),Y
b2fc: 29 03        AND #$03
b2fe: 20 e7 b2     JSR $b2e7   ; (p[$9a],Y)=A+1
b301: 69 0b        ADC #$0b    ; load special attack number, loop when $ff is found
b303: a8           TAY
b304: b1 9e        LDA ($9e),Y
b306: c9 ff        CMP #$ff
b308: d0 09        BNE +$09  [$b313]
b30a: a9 00        LDA #$00
b30c: a0 08        LDY #$08
b30e: 91 9a        STA ($9a),Y
b310: 4c f8 b2     JMP $b2f8
b313: 18           CLC         ; convert special attack number to spell number
b314: 69 42        ADC #$42
b316: 4c d5 b4     JMP $b4d5   ; Do enemy cast magic
b319: 20 25 b3     JSR $b325   ; Choose a random warrior for physical attack
b31c: ad cf 6b     LDA $6bcf
b31f: ae 89 6c     LDX $6c89
b322: 4c 81 a5     JMP $a581   ; ENEMY ATTACK!

; Choose a random warrior (#1 50%, #2 25%, #3 12.5%, #4 12.5%)
b325: 48           PHA
b326: 8a           TXA
b327: 48           PHA
b328: a9 00        LDA #$00
b32a: 8d cf 6b     STA $6bcf
b32d: 20 27 f2     JSR $f227   ; A = RND (0 .. 255) ??
b330: c9 20        CMP #$20
b332: b0 03        BCS +$03  [$b337]
b334: ee cf 6b     INC $6bcf
b337: c9 40        CMP #$40
b339: b0 03        BCS +$03  [$b33e]
b33b: ee cf 6b     INC $6bcf
b33e: c9 80        CMP #$80
b340: b0 03        BCS +$03  [$b345]
b342: ee cf 6b     INC $6bcf
b345: ad d1 6a     LDA $6ad1
b348: 0d d2 6a     ORA $6ad2
b34b: 0a           ASL
b34c: ae cf 6b     LDX $6bcf
b34f: e8           INX
b350: 4a           LSR
b351: ca           DEX
b352: d0 fc        BNE +$fc  [$b350]
b354: 29 01        AND #$01
b356: d0 d0        BNE +$d0  [$b328]
b358: 68           PLA
b359: aa           TAX
b35a: 68           PLA
b35b: 60           RTS

; p[$98]=spell in $6c8c and load spell data
b35c: ad 8c 6c     LDA $6c8c
b35f: c9 ff        CMP #$ff   ; no spell?
b361: f0 1c        BEQ +$1c  [$b37f]
b363: a2 08        LDX #$08
b365: 20 09 ae     JSR $ae09   ; XA = X*A
b368: 85 98        STA $98
b36a: 86 99        STX $99
b36c: a9 e0        LDA #$e0
b36e: 18           CLC
b36f: 65 98        ADC $98
b371: 85 98        STA $98
b373: a9 81        LDA #$81
b375: 65 99        ADC $99
b377: 85 99        STA $99
b379: a0 04        LDY #$04    ; Load spell effect
b37b: b1 98        LDA ($98),Y
b37d: d0 1d        BNE +$1d  [$b39c]
b37f: ad 89 6c     LDA $6c89   ; NO EFFECT: display something and return
b382: 29 03        AND #$03
b384: a2 01        LDX #$01
b386: 20 2d a3     JSR $a32d   ; load palette and do GFX?
b389: ad 8f 6c     LDA $6c8f   ; ITEM -> A=13, else A=15
b38c: c9 02        CMP #$02
b38e: d0 04        BNE +$04  [$b394]
b390: a9 15        LDA #$15
b392: d0 02        BNE +$02  [$b396]
b394: a9 13        LDA #$13
b396: 20 8e b2     JSR $b28e   ; Display message in A and close window?
b399: 68           PLA
b39a: 68           PLA
b39b: 60           RTS
b39c: 8d 6e 68     STA $686e   ; current spell effect
b39f: a0 02        LDY #$02
b3a1: b1 98        LDA ($98),Y
b3a3: 8d 78 68     STA $6878   ; current spell element
b3a6: a0 00        LDY #$00
b3a8: b1 98        LDA ($98),Y
b3aa: 8d 70 68     STA $6870   ; current spell hit rate
b3ad: a0 01        LDY #$01
b3af: b1 98        LDA ($98),Y
b3b1: 8d 74 68     STA $6874   ; current spell effectivity
b3b4: 60           RTS

; ITEM!
b3b5: 8d 8c 6c     STA $6c8c
b3b8: a9 02        LDA #$02
b3ba: 4c ca b3     JMP $b3ca

; DRINK!
b3bd: 8d 8c 6c     STA $6c8c
b3c0: a9 01        LDA #$01
b3c2: 4c ca b3     JMP $b3ca

; MAGIC!!
b3c5: 8d 8c 6c     STA $6c8c
b3c8: a9 00        LDA #$00

; all three end up here
b3ca: 8d 8f 6c     STA $6c8f
b3cd: 98           TYA
b3ce: 29 03        AND #$03
b3d0: 09 80        ORA #$80
b3d2: 8d 89 6c     STA $6c89
b3d5: 8d d1 6b     STA $6bd1
b3d8: 8e 8a 6c     STX $6c8a
b3db: a9 00        LDA #$00
b3dd: 8d a7 6d     STA $6da7
b3e0: 20 0c b0     JSR $b00c
b3e3: 20 5e b0     JSR $b05e   ; Draw attacker name
b3e6: 20 74 b0     JSR $b074   ; Draw spell name
b3e9: ad 89 6c     LDA $6c89
b3ec: 20 eb b5     JSR $b5eb   ; Set pointers for warrior A: p[$92]=permanent, p[$90]=in-battle
b3ef: a0 01        LDY #$01    ; MUTEd? Fail in casting
b3f1: b1 92        LDA ($92),Y
b3f3: 29 40        AND #$40
b3f5: f0 05        BEQ +$05  [$b3fc]
b3f7: a9 03        LDA #$03
b3f9: 4c 8e b2     JMP $b28e   ; Display message in A and close window?
b3fc: a9 00        LDA #$00
b3fe: 8d 94 6d     STA $6d94
b401: 20 5c b3     JSR $b35c   ; p[$98]=spell in $6c8c and load spell data
b404: 20 0a b4     JSR $b40a   ; Do player magic command
b407: 4c 0e b5     JMP $b50e   ; restore some stuff?

; Do player magic command
b40a: 20 84 b6     JSR $b684   ; GFX and load caster data for player
b40d: a0 03        LDY #$03    ; spell targeting
b40f: b1 98        LDA ($98),Y
b411: 4a           LSR
b412: 90 03        BCC +$03  [$b417]
b414: 4c 95 b4     JMP $b495   ; Target all enemies
b417: 4a           LSR
b418: 90 03        BCC +$03  [$b41d]
b41a: 4c 80 b4     JMP $b480   ; Target one enemy
b41d: 4a           LSR
b41e: 90 02        BCC +$02  [$b422]
b420: b0 05        BCS +$05  [$b427]
b422: 4a           LSR
b423: 90 12        BCC +$12  [$b437]
b425: b0 21        BCS +$21  [$b448]
b427: 20 3d b5     JSR $b53d   ; Target caster!
b42a: 20 b4 b0     JSR $b0b4   ; Print target name
b42d: 4c ad b5     JMP $b5ad   ; Load, cast, and save player magic target

; Check if player is dead
b430: a0 01        LDY #$01
b432: b1 92        LDA ($92),Y
b434: 29 03        AND #$03
b436: 60           RTS

; Player target one party member
b437: 20 b4 b0     JSR $b0b4   ; Print target name
b43a: 20 02 b6     JSR $b602   ; Load data for magic targeting player
b43d: 20 30 b4     JSR $b430   ; Check if player is dead
b440: f0 03        BEQ +$03  [$b445]
b442: 4c 94 b8     JMP $b894   ; Display "Ineffective" message
b445: 4c b0 b5     JMP $b5b0   ; Cast spell & save data for player magic target

; Player target whole party
b448: ad 89 6c     LDA $6c89
b44b: 8d cd 6b     STA $6bcd
b44e: a9 00        LDA #$00
b450: 8d ce 6b     STA $6bce
b453: ad ce 6b     LDA $6bce
b456: 09 80        ORA #$80
b458: 8d 8a 6c     STA $6c8a
b45b: 20 b4 b0     JSR $b0b4   ; Print target name
b45e: 20 02 b6     JSR $b602   ; Load data for magic targeting player
b461: 20 30 b4     JSR $b430   ; Check if player is dead
b464: f0 06        BEQ +$06  [$b46c]
b466: 20 94 b8     JSR $b894   ; Display "Ineffective" message
b469: 4c 6f b4     JMP $b46f
b46c: 20 b0 b5     JSR $b5b0   ; Cast spell & save data for player magic target
b46f: 20 42 b0     JSR $b042   ; graphics stuff?
b472: 20 50 aa     JSR $aa50   ; update posture?
b475: ee ce 6b     INC $6bce   ; ... and repeat for the rest of the warriors
b478: ad ce 6b     LDA $6bce
b47b: c9 04        CMP #$04
b47d: d0 d4        BNE +$d4  [$b453]
b47f: 60           RTS

; Player target one enemy
b480: 20 b4 b0     JSR $b0b4   ; Print target name
b483: ae 8a 6c     LDX $6c8a
b486: 20 c6 bb     JSR $bbc6   ; A=monster type in slot X, set Z flag if no monster
b489: d0 05        BNE +$05  [$b490]
b48b: 20 94 b8     JSR $b894   ; Display "Ineffective" message
b48e: d0 04        BNE +$04  [$b494]
b490: 8a           TXA
b491: 20 93 b5     JSR $b593   ; Load, cast, and save enemy magic target
b494: 60           RTS

; Player target all enemies
b495: a9 00        LDA #$00
b497: 8d ce 6b     STA $6bce
b49a: ac ce 6b     LDY $6bce
b49d: b9 b7 6b     LDA $6bb7,Y   ; Any enemy in this slot?
b4a0: c9 ff        CMP #$ff
b4a2: f0 0f        BEQ +$0f  [$b4b3]
b4a4: ad ce 6b     LDA $6bce
b4a7: 8d 8a 6c     STA $6c8a
b4aa: 20 b4 b0     JSR $b0b4   ; Print target name
b4ad: 20 93 b5     JSR $b593   ; Load, cast, and save enemy magic target
b4b0: 20 42 b0     JSR $b042   ; graphics stuff?
b4b3: ee ce 6b     INC $6bce   ; ... Target next enemy
b4b6: ad ce 6b     LDA $6bce
b4b9: c9 09        CMP #$09
b4bb: d0 dd        BNE +$dd  [$b49a]
b4bd: 60           RTS

; Set pointers for slot A: p[$92]=in-ROM, p[$90]=in-RAM
b4be: 20 86 bb     JSR $bb86   ; XA = address of in-RAM struct for slot A
b4c1: 85 90        STA $90
b4c3: 86 91        STX $91
b4c5: a0 11        LDY #$11    ; garbage?
b4c7: b1 90        LDA ($90),Y ; garbage?
b4c9: a0 00        LDY #$00    ; Load pointer to in-ROM struct
b4cb: b1 90        LDA ($90),Y
b4cd: 85 92        STA $92
b4cf: c8           INY
b4d0: b1 90        LDA ($90),Y
b4d2: 85 93        STA $93
b4d4: 60           RTS

; Do enemy cast magic
b4d5: 8d 8c 6c     STA $6c8c
b4d8: 20 0c b0     JSR $b00c
b4db: ad cd 6b     LDA $6bcd
b4de: 20 be b4     JSR $b4be   ; Set pointers for slot A: p[$92]=in-ROM, p[$90]=in-RAM
b4e1: 20 5e b0     JSR $b05e   ; Draw attacker name
b4e4: a9 00        LDA #$00
b4e6: 8d 8f 6c     STA $6c8f
b4e9: 20 74 b0     JSR $b074   ; Draw spell name
b4ec: a9 00        LDA #$00
b4ee: 8d 94 6d     STA $6d94
b4f1: 20 5c b3     JSR $b35c   ; p[$98]=spell in $6c8c and load spell data
b4f4: 20 30 b7     JSR $b730   ; Load data for enemy caster
b4f7: a0 06        LDY #$06    ; Muted? (how did $9a get set?)
b4f9: b1 9a        LDA ($9a),Y
b4fb: 29 40        AND #$40
b4fd: f0 08        BEQ +$08  [$b507]
b4ff: 20 74 b0     JSR $b074   ; Draw spell name
b502: a9 04        LDA #$04
b504: 4c 8e b2     JMP $b28e   ; Display message in A and close window?
b507: a0 03        LDY #$03    ; ???
b509: b1 98        LDA ($98),Y
b50b: 20 24 b5     JSR $b524   ; do the casting
b50e: 20 22 b0     JSR $b022
b511: ad 94 6d     LDA $6d94
b514: 8d 89 68     STA $6889
b517: ad 95 6d     LDA $6d95
b51a: 8d 85 68     STA $6885
b51d: ad 96 6d     LDA $6d96
b520: 8d 87 68     STA $6887   ; attacker type (0=player, 1=monster)
b523: 60           RTS

; Enemy cast command
b524: 4a           LSR
b525: 90 03        BCC +$03  [$b52a]
b527: 4c b6 b5     JMP $b5b6   ; target all warriors
b52a: 4a           LSR
b52b: 90 03        BCC +$03  [$b530]
b52d: 4c 9c b5     JMP $b59c   ; target one warrior
b530: 4a           LSR
b531: 90 02        BCC +$02  [$b535]
b533: b0 0f        BCS +$0f  [$b544]
b535: 4a           LSR
b536: 90 02        BCC +$02  [$b53a]
b538: b0 29        BCS +$29  [$b563]
b53a: 4c 4d b5     JMP $b54d   ; target one enemy

; Set target = caster
b53d: ad 89 6c     LDA $6c89
b540: 8d 8a 6c     STA $6c8a
b543: 60           RTS

; Enemy target caster
b544: 20 3d b5     JSR $b53d   ; Set target = caster
b547: 20 b4 b0     JSR $b0b4   ; Print target name
b54a: 4c 93 b5     JMP $b593   ; Load, cast, and save enemy magic target

; Enemy target one enemy
b54d: a9 00        LDA #$00    ; pick a target at random until we find a live one
b54f: a2 08        LDX #$08
b551: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
b554: aa           TAX
b555: 20 c6 bb     JSR $bbc6   ; A=monster type in slot X, set Z flag if no monster
b558: f0 f3        BEQ +$f3  [$b54d]
b55a: 8e 8a 6c     STX $6c8a
b55d: 20 b4 b0     JSR $b0b4   ; Print target name
b560: 4c 93 b5     JMP $b593   ; Load, cast, and save enemy magic target

; Enemy target all enemies
b563: a9 00        LDA #$00
b565: 8d ce 6b     STA $6bce
b568: ad ce 6b     LDA $6bce
b56b: cd 89 6c     CMP $6c89  ; BUG: skip self??
b56e: f0 18        BEQ +$18  [$b588]
;FIX: ea ea        NOP NOP
b570: aa           TAX
b571: 20 c6 bb     JSR $bbc6   ; A=monster type in slot X, set Z flag if no monster
b574: f0 12        BEQ +$12  [$b588]
b576: ad ce 6b     LDA $6bce
b579: 8d 8a 6c     STA $6c8a
b57c: 20 be b4     JSR $b4be   ; Set pointers for slot A: p[$92]=in-ROM, p[$90]=in-RAM
b57f: 20 b4 b0     JSR $b0b4   ; Print target name
b582: 20 93 b5     JSR $b593   ; Load, cast, and save enemy magic target
b585: 20 42 b0     JSR $b042
b588: ee ce 6b     INC $6bce   ; ... repeat for all slots
b58b: ad ce 6b     LDA $6bce
b58e: c9 09        CMP #$09
b590: d0 d6        BNE +$d6  [$b568]
b592: 60           RTS

; Load, cast, and save enemy magic target
b593: 20 c8 b6     JSR $b6c8   ; Load data for magic targeting enemy
b596: 20 cd b7     JSR $b7cd   ; Cast Spell!
b599: 4c 57 b7     JMP $b757   ; Save data for enemy magic target

; Enemy target one warrior
b59c: 20 25 b3     JSR $b325   ; Choose a random warrior
b59f: ad cf 6b     LDA $6bcf
b5a2: 09 80        ORA #$80
b5a4: 8d 8a 6c     STA $6c8a
b5a7: 20 b4 b0     JSR $b0b4   ; Print target name
b5aa: 4c ad b5     JMP $b5ad   ; Load, cast, and save player magic target

; Load, cast, and save player magic target
b5ad: 20 02 b6     JSR $b602   ; Load data for magic targeting player
b5b0: 20 cd b7     JSR $b7cd   ; Cast Spell!
b5b3: 4c 90 b7     JMP $b790   ; Save data for player magic target

; Enemy target all warriors
b5b6: a9 00        LDA #$00
b5b8: 8d ce 6b     STA $6bce
b5bb: ad ce 6b     LDA $6bce
b5be: 20 eb b5     JSR $b5eb   ; Set pointers for warrior A: p[$92]=permanent, p[$90]=in-battle
b5c1: a0 01        LDY #$01    ; skip if dead
b5c3: b1 92        LDA ($92),Y
b5c5: 29 03        AND #$03
b5c7: d0 17        BNE +$17  [$b5e0]
b5c9: ad ce 6b     LDA $6bce
b5cc: 09 80        ORA #$80
b5ce: 8d 8a 6c     STA $6c8a
b5d1: 20 02 b6     JSR $b602   ; Load data for magic targeting player
b5d4: 20 b4 b0     JSR $b0b4   ; Print target name
b5d7: 20 b0 b5     JSR $b5b0   ; Cast spell & save data for player magic target
b5da: 20 42 b0     JSR $b042
b5dd: 20 50 aa     JSR $aa50
b5e0: ee ce 6b     INC $6bce   ; ... next warrior
b5e3: ad ce 6b     LDA $6bce
b5e6: c9 04        CMP #$04
b5e8: d0 d1        BNE +$d1  [$b5bb]
b5ea: 60           RTS

; Set pointers for warrior A: p[$92]=permanent, p[$90]=in-battle
b5eb: 0a           ASL
b5ec: aa           TAX
b5ed: bd 74 b6     LDA $b674,X
b5f0: 85 90        STA $90
b5f2: bd 75 b6     LDA $b675,X
b5f5: 85 91        STA $91
b5f7: bd 7c b6     LDA $b67c,X
b5fa: 85 92        STA $92
b5fc: bd 7d b6     LDA $b67d,X
b5ff: 85 93        STA $93
b601: 60           RTS

; Load data for magic targeting player
b602: ad a7 6d     LDA $6da7
b605: 20 b8 be     JSR $beb8   ; Play sound
b608: ad 8a 6c     LDA $6c8a
b60b: 29 03        AND #$03
b60d: 20 fc a0     JSR $a0fc
b610: ad 8a 6c     LDA $6c8a
b613: 20 eb b5     JSR $b5eb   ; Set pointers for warrior A: p[$92]=permanent, p[$90]=in-battle
b616: a0 00        LDY #$00
b618: b1 92        LDA ($92),Y
;FIX: a9 00        LDA #$00
b61a: 8d 86 68     STA $6886   ; BUG class ID -> target creature type
b61d: a0 01        LDY #$01
b61f: b1 92        LDA ($92),Y
b621: 8d 6d 68     STA $686d   ; target status ailments
b624: a0 0a        LDY #$0a
b626: b1 92        LDA ($92),Y
b628: 8d 7a 68     STA $687a   ; target HP
b62b: c8           INY
b62c: b1 92        LDA ($92),Y
b62e: 8d 7b 68     STA $687b
b631: a0 0c        LDY #$0c
b633: b1 92        LDA ($92),Y
b635: 8d 80 68     STA $6880   ; target Max HP
b638: c8           INY
b639: b1 92        LDA ($92),Y
b63b: 8d 81 68     STA $6881
b63e: a0 0b        LDY #$0b
b640: b1 90        LDA ($90),Y
b642: 8d 7d 68     STA $687d   ; target hit multiplier
b645: a0 08        LDY #$08
b647: b1 90        LDA ($90),Y
b649: 8d 7f 68     STA $687f   ; target absorb
b64c: a0 07        LDY #$07
b64e: b1 90        LDA ($90),Y
b650: 8d 85 68     STA $6885   ; target evade
b653: a0 0e        LDY #$0e
b655: b1 90        LDA ($90),Y
;FIX: a9 00        LDA #$00
b657: 8d 76 68     STA $6876   ; BUG elemental attack -> target elemental weakness
b65a: a0 0a        LDY #$0a
b65c: b1 90        LDA ($90),Y
b65e: 8d 77 68     STA $6877   ; target elemental resistance
b661: a0 06        LDY #$06
b663: b1 90        LDA ($90),Y
b665: 8d 72 68     STA $6872   ; target magic defense
b668: c8           INY
b669: a9 00        LDA #$00
b66b: 8d 73 68     STA $6873   ; ???
b66e: a9 00        LDA #$00
b670: 8d 7e 68     STA $687e   ; target "courage"
; BUG: never loaded damage into $6882
; BUG: never loaded hit% into $6884
b673: 60           RTS

; Addresses of player structs
b674: 00 68        .DW $6800   ; in-battle structs
b676: 12 68        .DW $6812
b678: 24 68        .DW $6824
b67a: 36 68        .DW $6836
b67c: 00 61        .DW $6100   ; permanent structs
b67e: 40 61        .DW $6140
b680: 80 61        .DW $6180
b682: c0 61        .DW $61c0

; GFX and load caster data for player
b684: ad 89 6c     LDA $6c89
b686: 29 7f        AND #$7f
b689: ae 8f 6c     LDX $6c8f
b68c: d0 0a        BNE +$0a  [$b698]
b68e: a9 00        LDA #$00
b690: 20 b8 be     JSR $beb8  ; if magic, play 'cast' sound
b693: ad 89 6c     LDA $6c89
b696: 29 7f        AND #$7f
b698: ae 8f 6c     LDX $6c8f
b69b: 20 2d a3     JSR $a32d   ; load palette and do GFX?
b69e: ad 89 6c     LDA $6c89
b6a1: 20 eb b5     JSR $b5eb   ; Set pointers for warrior A: p[$92]=permanent, p[$90]=in-battle
b6a4: a0 01        LDY #$01
b6a6: b1 92        LDA ($92),Y
b6a8: 8d 6c 68     STA $686c  ; caster status
b6ab: a0 09        LDY #$09
b6ad: b1 90        LDA ($90),Y
b6af: 8d 75 68     STA $6875  ; caster damage
b6b2: a0 26        LDY #$26
b6b4: b1 92        LDA ($92),Y
b6b6: 8d 83 68     STA $6883  ; caster level
b6b9: a0 05        LDY #$05
b6bb: b1 90        LDA ($90),Y
b6bd: 8d 84 68     STA $6884  ; caster hit %
b6c0: a0 00        LDY #$00
b6c2: b1 92        LDA ($92),Y
b6c4: 8d 79 68     STA $6879  ; caster class ID
; BUG: this would be a good place to handle Int
b6c7: 60           RTS

; Load data for magic targeting enemy
b6c8: ad 8a 6c     LDA $6c8a
b6cb: 20 be b4     JSR $b4be   ; Set pointers for slot A: p[$92]=in-ROM, p[$90]=in-RAM
b6ce: a0 02        LDY #$02
b6d0: b1 90        LDA ($90),Y
b6d2: 8d 7a 68     STA $687a   ; target HP
b6d5: c8           INY
b6d6: b1 90        LDA ($90),Y
b6d8: 8d 7b 68     STA $687b
b6db: c8           INY
b6dc: b1 92        LDA ($92),Y
b6de: 8d 80 68     STA $6880   ; target Max HP
b6e1: c8           INY
b6e2: b1 92        LDA ($92),Y
b6e4: 8d 81 68     STA $6881
b6e7: b1 90        LDA ($90),Y
b6e9: 8d 7d 68     STA $687d   ; target hit multiplier
b6ec: c8           INY
b6ed: b1 90        LDA ($90),Y
b6ef: 8d 6d 68     STA $686d   ; target status ailments
b6f2: a0 10        LDY #$10
b6f4: b1 92        LDA ($92),Y
b6f6: 8d 86 68     STA $6886   ; target creature type
b6f9: c8           INY
b6fa: b1 92        LDA ($92),Y
b6fc: 8d 72 68     STA $6872   ; target magic defense
b6ff: a9 00        LDA #$00
b701: 8d 73 68     STA $6873   ; ???
b704: c8           INY
b705: b1 92        LDA ($92),Y
b707: 8d 76 68     STA $6876   ; target elemental weakness
b70a: c8           INY
b70b: b1 92        LDA ($92),Y
b70d: 8d 77 68     STA $6877   ; BUG target elemental resistance
; Needs to come from in-RAM somehow
b710: a0 09        LDY #$09
b712: b1 90        LDA ($90),Y
b714: 8d 7e 68     STA $687e   ; target "courage"
b717: b1 92        LDA ($92),Y
b719: 8d 7f 68     STA $687f   ; BUG target absorb
; Needs to come from in-RAM index 4 
b71c: c8           INY
b71d: b1 90        LDA ($90),Y
b71f: 8d 85 68     STA $6885   ; target evade
b722: c8           INY
b723: b1 90        LDA ($90),Y
b725: 8d 82 68     STA $6882   ; target damage
b728: a9 02        LDA #$02
b72a: 20 b8 be     JSR $beb8   ; Play sound
; BUG: never loaded hit% into $6884
b72d: 4c fa bb     JMP $bbfa   ; do attack sound & sparkles

; Load data for enemy caster
b730: ad 89 6c     LDA $6c89
b733: 20 be b4     JSR $b4be   ; Set pointers for slot A: p[$92]=in-ROM, p[$90]=in-RAM
b736: a0 06        LDY #$06
b738: b1 90        LDA ($90),Y
b73a: 8d 6c 68     STA $686c  ; caster status
b73d: a0 10        LDY #$10
b73f: b1 90        LDA ($90),Y
;FIX: b1 92        LDA ($92),Y
b741: 8d 79 68     STA $6879  ; BUG high byte of gold -> caster category
b744: a0 0b        LDY #$0b
b746: b1 90        LDA ($90),Y
b748: 8d 84 68     STA $6884  ; BUG caster damage -> target Hit%
b74b: c8           INY
b74c: b1 90        LDA ($90),Y
b74e: 8d 75 68     STA $6875  ; BUG AI -> caster damage
b751: a9 00        LDA #$00
b753: 8d 83 68     STA $6883  ; caster level
b756: 60           RTS

; Save data for enemy magic target
b757: ad 8a 6c     LDA $6c8a
b75a: 20 be b4     JSR $b4be   ; Set pointers for slot A: p[$92]=in-ROM, p[$90]=in-RAM
b75d: ad 7a 68     LDA $687a   ; Save target HP
b760: a0 02        LDY #$02
b762: 91 90        STA ($90),Y
b764: ad 7b 68     LDA $687b
b767: c8           INY
b768: 91 90        STA ($90),Y
b76a: c8           INY
b76b: ad 7f 68     LDA $687f   ; Save target absorb
b76e: 91 90        STA ($90),Y
b770: ad 7d 68     LDA $687d   ; Save target hit multiplier
b773: c8           INY
b774: 91 90        STA ($90),Y
b776: ad 6d 68     LDA $686d   ; Save target status ailments
b779: c8           INY
b77a: 91 90        STA ($90),Y
b77c: ad 7e 68     LDA $687e   ; Save target "courage"
b77f: a0 09        LDY #$09
b781: 91 90        STA ($90),Y
b783: ad 85 68     LDA $6885   ; Save target evade
b786: c8           INY
b787: 91 90        STA ($90),Y
b789: ad 82 68     LDA $6882   ; Save target damage
b78c: c8           INY
b78d: 91 90        STA ($90),Y
; BUG: Need to save target Hit% from $6884
; BUG: Need to save target elemental resistance from $6877
b78f: 60           RTS

; Save data for player magic target
b790: ad 8a 6c     LDA $6c8a
b793: 20 eb b5     JSR $b5eb   ; Set pointers for warrior A: p[$92]=permanent, p[$90]=in-battle
b796: ad 6d 68     LDA $686d   ; Save target status ailments
b799: a0 01        LDY #$01
b79b: 91 92        STA ($92),Y
b79d: ad 72 68     LDA $6872   ; Save target magic defense (wtf?)
b7a0: a0 25        LDY #$25
b7a2: 91 92        STA ($92),Y
b7a4: ad 7a 68     LDA $687a   ; Save target HP
b7a7: a0 0a        LDY #$0a
b7a9: 91 92        STA ($92),Y
b7ab: ad 7b 68     LDA $687b
b7ae: c8           INY
b7af: 91 92        STA ($92),Y
b7b1: ad 77 68     LDA $6877   ; Save target elemental resistance
b7b4: a0 0a        LDY #$0a
b7b6: 91 90        STA ($90),Y
b7b8: ad 7d 68     LDA $687d   ; Save target hit multiplier
b7bb: c8           INY
b7bc: 91 90        STA ($90),Y
b7be: ad 7f 68     LDA $687f   ; Save target absorb
b7c1: a0 08        LDY #$08
b7c3: 91 90        STA ($90),Y
b7c5: a0 07        LDY #$07
b7c7: ad 85 68     LDA $6885   ; Save target evade
b7ca: 91 90        STA ($90),Y
; BUG: Need to save Damage from $6882
; BUG: Need to save Hit% from $6884
b7cc: 60           RTS

; Cast Spell!
b7cd: ad 6e 68     LDA $686e   ; current spell effect
b7d0: 0a           ASL
b7d1: aa           TAX
b7d2: bd 07 b8     LDA $b807,X ; load address of spell effect function
b7d5: 85 96        STA $96
b7d7: bd 08 b8     LDA $b808,X
b7da: 85 97        STA $97
b7dc: ad 6d 68     LDA $686d   ; target status ailments
b7df: 8d 90 6c     STA $6c90
b7e2: a9 00        LDA #$00
b7e4: 8d 5c 68     STA $685c
b7e7: 20 03 b8     JSR $b803   ; call effect routine
b7ea: 20 3d b1     JSR $b13d   ; print message?
b7ed: a9 12        LDA #$12    ;; Dead? set status
b7ef: 20 3c af     JSR $af3c   ; w[A]<=0 (sets flags NZ)
b7f2: f0 04        BEQ +$04  [$b7f8]
b7f4: 30 02        BMI +$02  [$b7f8]
b7f6: 10 08        BPL +$08  [$b800]
b7f8: ad 6d 68     LDA $686d   ; target status ailments
b7fb: 09 01        ORA #$01
b7fd: 8d 6d 68     STA $686d   ; target status ailments
b800: 4c f8 ba     JMP $baf8   ; handle status changes
b803: 18           CLC
b804: 6c 96 00     JMP ($0096)

b807: 94 b8        .DW $b894   ; Effect 00: "Ineffective"
b809: 99 b8        .DW $b899   ; Effect 01: Damage
b80b: 05 b9        .DW $b905   ; Effect 02: Undead damage
b80d: 2f b9        .DW $b92f   ; Effect 03: Apply status ailment
b80f: 5e b9        .DW $b95e   ; Effect 04: hit multiplier down
b811: 79 b9        .DW $b979   ; Effect 05: "courage" down
b813: 99 b9        .DW $b999   ; Effect 06: HP up (unused)
b815: 99 b9        .DW $b999   ; Effect 07: HP up
b817: cd b9        .DW $b9cd   ; Effect 08: Cure status ailment
b819: e4 b9        .DW $b9e4   ; Effect 09: Absorb up
b81b: f4 b9        .DW $b9f4   ; Effect 0a: Grant elemental resistance
b81d: 00 ba        .DW $ba00   ; Effect 0b: Damage up
b81f: 10 ba        .DW $ba10   ; Effect 0c: hit multiplier up
b821: 28 ba        .DW $ba28   ; Effect 0d: Hit% and Damage up
b823: 46 ba        .DW $ba46   ; Effect 0e: Evade down
b825: 68 ba        .DW $ba68   ; Effect 0f: CUR4
b827: 73 ba        .DW $ba73   ; Effect 10: Evade up
b829: 94 ba        .DW $ba94   ; Effect 11: Remove elemental resistance
b82b: d7 ba        .DW $bad7   ; Effect 12: Apply status if not strong and HP<300

; Calc magic hit rate, base damage, and hit roll
;  IN: w[0] = base hit chance
;      w[1] = effectivity
; OUT: w[0] = hit rate
;      w[1] = damage
;      w[2] = RND(0..200)
b82d: a9 00        LDA #$00    ;;; hit rate = base + spell rate - mag def
b82f: ae 70 68     LDX $6870   ; current spell hit rate
b832: 20 dd ae     JSR $aedd   ; w[A] = clamp(w[A] + X)
b835: a9 00        LDA #$00
b837: ae 72 68     LDX $6872   ; target magic defense
b83a: 20 0a af     JSR $af0a   ; w[A] = clamp(w[A] - X)
b83d: a9 00        LDA #$00    ;;; damage = E .. 2*E
b83f: ae 58 68     LDX $6858
b842: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
b845: aa           TAX
b846: a9 01        LDA #$01
b848: 20 dd ae     JSR $aedd   ; w[A] = clamp(w[A] + X)
b84b: 20 83 ba     JSR $ba83   ;;; hit roll = RND (0 .. 200)
b84e: 4c 8b ba     JMP $ba8b   ; w[2] = A

; Apply elemental weakness into w[0]
; Weakness in $6876   ; target elemental weakness
; Resistance in $6877   ; target elemental resistance
; Elements to test in $6878   ; current spell element
;    strong:        w[0] = 0
;    strong & weak: w[0] = 40
;    normal:        w[0] = 148
;    weak:          w[0] = 188
b851: 20 73 b8     JSR $b873   ; w[0] = #$94
b854: ad 78 68     LDA $6878   ; current spell element
b857: 2d 77 68     AND $6877   ; target elemental resistance
b85a: f0 08        BEQ +$08  [$b864]
b85c: a9 00        LDA #$00
b85e: 8d 56 68     STA $6856
b861: 8d 57 68     STA $6857
b864: ad 78 68     LDA $6878   ; current spell element
b867: 2d 76 68     AND $6876   ; target elemental weakness
b86a: f0 11        BEQ +$11  [$b87d]  ; RET
b86c: a9 00        LDA #$00
b86e: a2 28        LDX #$28
b870: 4c dd ae     JMP $aedd   ; w[A] = clamp(w[A] + X)

; w[0] = #$94
b873: a9 94        LDA #$94
b875: 8d 56 68     STA $6856
b878: a9 00        LDA #$00
b87a: 8d 57 68     STA $6857
b87d: 60           RTS

; CMP w[0] >= w[2] (sets NC, clear others)
b87e: a0 00        LDY #$00
b880: a2 02        LDX #$02
b882: 4c ea ad     JMP $adea   ; CMP w[Y] >= w[X] (sets NC, clear others)

; $685c = #$01 ("spell was effective"?)
b885: a9 01        LDA #$01
b887: 8d 5c 68     STA $685c
b88a: 60           RTS

; w[0] = 0
b88b: a9 00        LDA #$00
b88d: 8d 56 68     STA $6856
b890: 8d 57 68     STA $6857
b893: 60           RTS

; Effect 00: Display "ineffective" message
b894: a9 04        LDA #$04
b896: 4c f2 b0     JMP $b0f2   ; Display message indicated in A

; Effect 01: damaging magic
b899: 20 85 b8     JSR $b885   ; $685c = #$01 ("spell was effective"?)
b89c: 20 73 b8     JSR $b873   ; w[0] = #$94
b89f: 20 f9 b8     JSR $b8f9   ; w[1] = spell effectivity
b8a2: ad 78 68     LDA $6878   ; current spell element
b8a5: 2d 77 68     AND $6877   ; target elemental resistance
b8a8: f0 09        BEQ +$09  [$b8b3]
b8aa: 20 8b b8     JSR $b88b   ; w[0] = #0
b8ad: 4e 59 68     LSR $6859   ; w[1] /= 2
b8b0: 6e 58 68     ROR $6858
b8b3: ad 78 68     LDA $6878   ; current spell element
b8b6: 2d 76 68     AND $6876   ; target elemental weakness
b8b9: f0 1d        BEQ +$1d  [$b8d8]
b8bb: a9 00        LDA #$00
b8bd: a2 28        LDX #$28
b8bf: 20 dd ae     JSR $aedd   ; w[A] = clamp(w[A] + X)
b8c2: a2 01        LDX #$01
b8c4: a0 02        LDY #$02
b8c6: 20 4d af     JSR $af4d   ; w[Y] = w[X]
b8c9: 4e 59 68     LSR $6859   ; w[1] /= 2
b8cc: 6e 58 68     ROR $6858
b8cf: a9 01        LDA #$01
b8d1: a2 02        LDX #$02
b8d3: a0 01        LDY #$01
b8d5: 20 7b ae     JSR $ae7b   ; w[A] = w[X] + w[Y]
b8d8: 20 2d b8     JSR $b82d   ; Calc magic hit rate, base damage, and hit roll
                               ; fall through to apply damages

; Damage*=2 if roll!=200 and roll<=rate; HP-=Damage
b8db: ad 5a 68     LDA $685a   ;;; roll != 200 && roll <= rate --> dmg*=2
b8de: c9 c8        CMP #$c8
b8e0: f0 0b        BEQ +$0b  [$b8ed]
b8e2: 20 7e b8     JSR $b87e   ; CMP w[0] >= w[2] (sets NC, clear others)
b8e5: 90 06        BCC +$06  [$b8ed]
b8e7: 0e 58 68     ASL $6858
b8ea: 2e 59 68     ROL $6859
b8ed: a9 12        LDA #$12    ;;; HP = HP - damage
b8ef: a2 12        LDX #$12
b8f1: a0 01        LDY #$01
b8f3: 20 ac ae     JSR $aeac   ; w[A] = w[X] - w[Y]
b8f6: 4c cd b0     JMP $b0cd

; w[1] = spell effectivity
b8f9: ad 74 68     LDA $6874   ; current spell effectivity
b8fc: 8d 58 68     STA $6858
b8ff: a9 00        LDA #$00
b901: 8d 59 68     STA $6859
b904: 60           RTS

; Effect 02: Damage undead
b905: 20 73 b8     JSR $b873   ; w[0] = #$94
b908: 20 f9 b8     JSR $b8f9   ; w[1] = spell effectivity
b90b: 20 2d b8     JSR $b82d   ; Calc magic hit rate, base damage, and hit roll
b90e: ad 86 68     LDA $6886   ; target creature type
b911: 29 08        AND #$08    ;;; Is undead?
b913: d0 0e        BNE +$0e  [$b923]
b915: a9 00        LDA #$00    ;;; Not undead, do 0 damage and ineffective
b917: 8d 58 68     STA $6858
b91a: 8d 59 68     STA $6859
b91d: a9 00        LDA #$00
b91f: 8d 5c 68     STA $685c
b922: 60           RTS
b923: 20 85 b8     JSR $b885   ; $685c = #$01 ("spell was effective"?)
b926: 4c db b8     JMP $b8db   ; Damage*=2 if roll!=200 and roll<=rate; HP-=Damage

; Apply element to hit rate; calc magic hit rate, base damage, and hit roll
b929: 20 51 b8     JSR $b851   ; Apply elemental weakness into w[0]
b92c: 4c 2d b8     JMP $b82d   ; Calc magic hit rate, base damage, and hit roll

; Effect 03: Apply status ailment
b92f: 20 29 b9     JSR $b929   ; Apply element to hit rate; calc magic hit rate, base damage, and hit roll
b932: ad 5a 68     LDA $685a   ;;; Hit if roll!=200 and roll<=rate
b935: c9 c8        CMP #$c8
b937: f0 0b        BEQ +$0b  [$b944]
b939: 20 7e b8     JSR $b87e   ; CMP w[0] >= w[2] (sets NC, clear others)
b93c: 90 06        BCC +$06  [$b944]
b93e: 20 4a b9     JSR $b94a   ; Apply status ailments
b941: 4c 85 b8     JMP $b885   ; $685c = #$01 ("spell was effective"?)
b944: a9 00        LDA #$00    ; $685c = #0 ("spell missed"?)
b946: 8d 5c 68     STA $685c
b949: 60           RTS

; Apply status ailments
b94a: ad 74 68     LDA $6874   ;;; spell effectivity stores ailments
b94d: 48           PHA
b94e: 2d 6d 68     AND $686d   ;;; Display "ineffective" if target already has ailments
b951: f0 03        BEQ +$03  [$b956]
b953: 20 94 b8     JSR $b894   ; Display "Ineffective" message
b956: 68           PLA
b957: 0d 6d 68     ORA $686d   ;;; apply ailments
b95a: 8d 6d 68     STA $686d
b95d: 60           RTS

; Effect 04: hit multiplier down
b95e: 20 29 b9     JSR $b929   ; Apply element to hit rate; calc magic hit rate, base damage, and hit roll
b961: ad 5a 68     LDA $685a   ;;; Hit if roll!=200 and roll<=rate
b964: c9 c8        CMP #$c8
b966: f0 10        BEQ +$10  [$b978]
b968: 20 7e b8     JSR $b87e   ; CMP w[0] >= w[2] (sets NC, clear others)
b96b: 90 0b        BCC +$0b  [$b978]
b96d: 20 85 b8     JSR $b885   ; $685c = #$01 ("spell was effective"?)
b970: ce 7d 68     DEC $687d   ; target hit multiplier
b973: 10 03        BPL +$03  [$b978]
b975: ee 7d 68     INC $687d   ; target hit multiplier
b978: 60           RTS

; Effect 05: "courage" down
b979: 20 29 b9     JSR $b929   ; Apply element to hit rate; calc magic hit rate, base damage, and hit roll
b97c: ad 5a 68     LDA $685a   ;;; Hit if roll!=200 and roll<=rate
b97f: c9 c8        CMP #$c8
b981: f0 f5        BEQ +$f5  [$b978]
b983: 20 7e b8     JSR $b87e   ; CMP w[0] >= w[2] (sets NC, clear others)
b986: 90 5b        BCC +$5b  [$b9e3]
b988: ad 7e 68     LDA $687e   ; target "courage"
b98b: 38           SEC
b98c: ed 74 68     SBC $6874   ; current spell effectivity
b98f: b0 02        BCS +$02  [$b993]
b991: a9 00        LDA #$00
b993: 8d 7e 68     STA $687e   ; target "courage"
b996: 4c 85 b8     JMP $b885   ; $685c = #$01 ("spell was effective"?)

; Effect 07: HP up
b999: 20 85 b8     JSR $b885   ; $685c = #$01 ("spell was effective"?)
b99c: ad 6d 68     LDA $686d   ;;; Is dead? do nothing
b99f: 29 01        AND #$01
b9a1: d0 d5        BNE +$d5  [$b978]
b9a3: ad 74 68     LDA $6874   ;;; Heal RND(E .. 2*E), clamp to 255
b9a6: aa           TAX
b9a7: a9 00        LDA #$00
b9a9: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
b9ac: 18           CLC
b9ad: 6d 74 68     ADC $6874
b9b0: 90 02        BCC +$02  [$b9b4]
b9b2: a9 ff        LDA #$ff
b9b4: aa           TAX
b9b5: a9 12        LDA #$12    ;; Add to HP, clamp to Max HP
b9b7: 20 dd ae     JSR $aedd   ; w[A] = clamp(w[A] + X)
b9ba: a2 15        LDX #$15
b9bc: a0 12        LDY #$12
b9be: 20 ea ad     JSR $adea   ; CMP w[Y] >= w[X] (sets NC, clear others)
b9c1: 90 20        BCC +$20  [$b9e3]
b9c3: 4c c6 b9     JMP $b9c6   ; Set HP to Max   ; Clamp HP to Max HP

; Set HP to Max
b9c6: a2 15        LDX #$15
b9c8: a0 12        LDY #$12
b9ca: 4c 4d af     JMP $af4d   ; w[Y] = w[X]

; Effect 08: Cure status ailment
b9cd: ad 6d 68     LDA $686d   ; target status ailments
b9d0: 2d 74 68     AND $6874   ; current spell effectivity
b9d3: f0 0e        BEQ +$0e  [$b9e3]
b9d5: ad 74 68     LDA $6874   ; current spell effectivity
b9d8: 49 ff        EOR #$ff
b9da: 2d 6d 68     AND $686d   ; target status ailments
b9dd: 8d 6d 68     STA $686d   ; target status ailments
b9e0: 20 85 b8     JSR $b885   ; $685c = #$01 ("spell was effective"?)
b9e3: 60           RTS

; Effect 09: Absorb up
b9e4: ad 7f 68     LDA $687f   ; target absorb
b9e7: 6d 74 68     ADC $6874   ; current spell effectivity
b9ea: 90 02        BCC +$02  [$b9ee]
b9ec: a9 ff        LDA #$ff
b9ee: 8d 7f 68     STA $687f   ; target absorb
b9f1: 4c 85 b8     JMP $b885   ; $685c = #$01 ("spell was effective"?)

; Effect 0a: Grant elemental resistance
b9f4: ad 74 68     LDA $6874   ; current spell effectivity
b9f7: 0d 77 68     ORA $6877   ; target elemental resistance
b9fa: 8d 77 68     STA $6877   ; target elemental resistance
b9fd: 4c 85 b8     JMP $b885   ; $685c = #$01 ("spell was effective"?)

; Effect 0b: Damage up
ba00: ad 82 68     LDA $6882   ; target damage
ba03: 6d 74 68     ADC $6874   ; current spell effectivity
ba06: 90 02        BCC +$02  [$ba0a]
ba08: a9 ff        LDA #$ff
ba0a: 8d 82 68     STA $6882   ; target damage
ba0d: 4c 85 b8     JMP $b885   ; $685c = #$01 ("spell was effective"?)

; Effect 0c: hit multiplier up
ba10: 20 85 b8     JSR $b885   ; $685c = #$01 ("spell was effective"?)
ba13: ee 7d 68     INC $687d   ; target hit multiplier
ba16: ad 7d 68     LDA $687d   ; target hit multiplier
ba19: c9 03        CMP #$03
ba1b: 90 07        BCC +$07  [$ba24]
ba1d: a9 00        LDA #$00    ;;; mark ineffective if already FAST
ba1f: 8d 5c 68     STA $685c
ba22: a9 02        LDA #$02
ba24: 8d 7d 68     STA $687d   ; target hit multiplier
ba27: 60           RTS

; Effect 0d: Hit% and damage up
ba28: ad 84 68     LDA $6884   ; target hit %
ba2b: 6d 70 68     ADC $6870   ; current spell hit rate
ba2e: 90 02        BCC +$02  [$ba32]
ba30: a9 ff        LDA #$ff
ba32: 8d 84 68     STA $6884   ; target hit %
ba35: ad 74 68     LDA $6874   ; current spell effectivity
ba38: 18           CLC
ba39: 6d 82 68     ADC $6882   ; target damage
ba3c: 90 02        BCC +$02  [$ba40]
ba3e: a9 ff        LDA #$ff
ba40: 8d 82 68     STA $6882   ; target damage
ba43: 4c 85 b8     JMP $b885   ; $685c = #$01 ("spell was effective"?)

; Effect 0e: Evade down
ba46: 20 29 b9     JSR $b929   ; Apply element to hit rate; calc magic hit rate, base damage, and hit roll
ba49: ad 5a 68     LDA $685a   ;;; Hit if roll!=200 and roll<=rate
ba4c: c9 c8        CMP #$c8
ba4e: 4c 67 ba     JMP $ba67   ; BUG
;FIX: f0 17        BEQ +$17  [$ba67]
;FIX: ea           NOP
ba51: 20 7e b8     JSR $b87e   ; CMP w[0] >= w[2] (sets NC, clear others)
ba54: 90 11        BCC +$11  [$ba67]
ba56: ad 85 68     LDA $6885   ; target evade
ba59: 38           SEC
ba5a: ed 74 68     SBC $6874   ; current spell effectivity
ba5d: b0 02        BCS +$02  [$ba61]
ba5f: a9 00        LDA #$00
ba61: 8d 85 68     STA $6885   ; target evade
ba64: 20 85 b8     JSR $b885   ; $685c = #$01 ("spell was effective"?)
ba67: 60           RTS

; Effect 0f: CUR4
ba68: 20 c6 b9     JSR $b9c6   ; Set HP to Max
ba6b: a9 00        LDA #$00
ba6d: 8d 6d 68     STA $686d   ; target status ailments
ba70: 4c 85 b8     JMP $b885   ; $685c = #$01 ("spell was effective"?)

; Effect 10: Evade up
ba73: ad 85 68     LDA $6885   ; target evade
ba76: 6d 74 68     ADC $6874   ; current spell effectivity
ba79: 90 02        BCC +$02  [$ba7d]
ba7b: a9 ff        LDA #$ff
ba7d: 8d 85 68     STA $6885   ; target evade
ba80: 4c 85 b8     JMP $b885   ; $685c = #$01 ("spell was effective"?)

; A = RND (0 .. 200)
ba83: a9 00        LDA #$00
ba85: a2 c8        LDX #$c8
ba87: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
ba8a: 60           RTS

; w[2] = A
ba8b: 8d 5a 68     STA $685a
ba8e: a9 00        LDA #$00
ba90: 8d 5b 68     STA $685b
ba93: 60           RTS

; Effect 11: Remove elemental resistance
                               ;;; Why does it do the "apply element" crap here
                               ;;; instead of calling $b929? The only
                               ;;; difference is that weak overrides strong
                               ;;; instead of both applying, and it skips the
                               ;;; damage calculation.
ba94: 20 73 b8     JSR $b873   ; w[0] = #$94
ba97: ad 78 68     LDA $6878   ; current spell element
ba9a: 2d 77 68     AND $6877   ; target elemental resistance
ba9d: f0 03        BEQ +$03  [$baa2]
ba9f: 20 8b b8     JSR $b88b   ; w[0] = #0
baa2: ad 78 68     LDA $6878   ; current spell element
baa5: 2d 76 68     AND $6876   ; target elemental weakness
baa8: f0 05        BEQ +$05  [$baaf]
baaa: a9 bc        LDA #$bc
baac: 8d 56 68     STA $6856
baaf: a9 00        LDA #$00
bab1: ae 70 68     LDX $6870   ; current spell hit rate
bab4: 20 dd ae     JSR $aedd   ; w[A] = clamp(w[A] + X)
bab7: a9 00        LDA #$00
bab9: ae 72 68     LDX $6872   ; target magic defense
babc: 20 0a af     JSR $af0a   ; w[A] = clamp(w[A] - X)
babf: 20 83 ba     JSR $ba83   ; A = RND (0 .. 200)
                               ;;; End pointless repetition, but add an
                               ;;;  LDA $685a here if you remove it. And kill
                               ;;;  the JSR $ba8b too.
bac2: c9 c8        CMP #$c8    ;;; Hit if roll!=200 and roll<=rate
bac4: f0 10        BEQ +$10  [$bad6]
bac6: 20 8b ba     JSR $ba8b   ; w[2] = A
bac9: 20 7e b8     JSR $b87e   ; CMP w[0] >= w[2] (sets NC, clear others)
bacc: 90 08        BCC +$08  [$bad6]
bace: a9 00        LDA #$00
bad0: 8d 77 68     STA $6877   ; target elemental resistance
bad3: 20 85 b8     JSR $b885   ; $685c = #$01 ("spell was effective"?)
bad6: 60           RTS

; Effect 12: Apply status if not strong and HP<300
bad7: ad 78 68     LDA $6878   ; current spell element
bada: 2d 77 68     AND $6877   ; target elemental resistance
badd: d0 f7        BNE +$f7  [$bad6]
badf: a9 2c        LDA #$2c    ; w[2] = 300
bae1: 8d 5a 68     STA $685a
bae4: a9 01        LDA #$01
bae6: 8d 5b 68     STA $685b
bae9: a0 02        LDY #$02
baeb: a2 12        LDX #$12
baed: 20 ea ad     JSR $adea   ; CMP w[Y] >= w[X] (sets NC, clear others)
baf0: 90 e4        BCC +$e4  [$bad6]
baf2: 20 4a b9     JSR $b94a   ; Apply status ailments
baf5: 4c 85 b8     JMP $b885   ; $685c = #$01 ("spell was effective"?)

; handle status changes
baf8: a2 08        LDX #$08
bafa: ad 6d 68     LDA $686d   ; target status ailments
bafd: 85 97        STA $97
baff: a9 00        LDA #$00
bb01: 85 96        STA $96     ;; Find changed statuses
bb03: 4e 90 6c     LSR $6c90   ; pre-spell status ailments
bb06: 26 96        ROL $96
bb08: 46 97        LSR $97
bb0a: 2a           ROL
bb0b: c5 96        CMP $96
bb0d: d0 05        BNE +$05  [$bb14]
bb0f: ca           DEX
bb10: d0 ed        BNE +$ed  [$baff]
bb12: f0 28        BEQ +$28  [$bb3c]
bb14: c9 00        CMP #$00    ; Changed status found!
bb16: f0 1e        BEQ +$1e  [$bb36]
bb18: e0 08        CPX #$08    ; Became dead? Choose and display correct message if it was a warrior/enemy then leave the routine.
bb1a: d0 10        BNE +$10  [$bb2c]
bb1c: a9 0c        LDA #$0c
bb1e: ae 8a 6c     LDX $6c8a
bb21: 10 03        BPL +$03  [$bb26]
bb23: 18           CLC
bb24: 69 08        ADC #$08
bb26: 20 f2 b0     JSR $b0f2   ; Display message indicated in A
bb29: 4c 3c bb     JMP $bb3c
bb2c: 8a           TXA         ; something else, the messages are the same
bb2d: 18           CLC
bb2e: 69 04        ADC #$04
bb30: 20 f2 b0     JSR $b0f2   ; Display message indicated in A
bb33: 4c 0f bb     JMP $bb0f   ; .. and next status
bb36: 8a           TXA         ; Something cured, pick the right message, display it, and continue
bb37: 18           CLC
bb38: 69 0c        ADC #$0c
bb3a: d0 f4        BNE +$f4  [$bb30]  ; will always branch
bb3c: ae 8a 6c     LDX $6c8a
bb3f: 30 22        BMI +$22  [$bb63]
bb41: ad 6d 68     LDA $686d   ;; Enemy dead? Clear the monster slot.
bb44: 29 03        AND #$03
bb46: f0 15        BEQ +$15  [$bb5d]
bb48: 20 ee bb     JSR $bbee   ; do attack sparkles
bb4b: ae 8a 6c     LDX $6c8a
bb4e: 20 88 b2     JSR $b288   ; Clear monster slot
bb51: ad 6d 68     LDA $686d   ; target status ailments
bb54: 8d 94 6d     STA $6d94
bb57: ad 8a 6c     LDA $6c8a
bb5a: 8d 95 6d     STA $6d95
bb5d: a9 00        LDA #$00
bb5f: 8d 96 6d     STA $6d96
bb62: 60           RTS
bb63: ad 6d 68     LDA $686d   ;; player dead or asleep/stopped? clear command
bb66: 29 33        AND #$33
bb68: f0 16        BEQ +$16  [$bb80]
bb6a: 8d 94 6d     STA $6d94
bb6d: ad 8a 6c     LDA $6c8a
bb70: 09 80        ORA #$80
bb72: 8d 95 6d     STA $6d95
bb75: ad 8a 6c     LDA $6c8a
bb78: 0a           ASL
bb79: 0a           ASL
bb7a: a8           TAY
bb7b: a9 00        LDA #$00
bb7d: 99 8f 68     STA $688f,Y
bb80: a9 01        LDA #$01
bb82: 8d 96 6d     STA $6d96
bb85: 60           RTS

; XA = address of in-RAM struct for slot A
bb86: 8c 87 6c     STY $6c87
bb89: a2 14        LDX #$14
bb8b: 20 09 ae     JSR $ae09   ; XA = X*A
bb8e: 18           CLC         ; XA += #$6bd3
bb8f: 69 d3        ADC #$d3
bb91: 48           PHA
bb92: 8a           TXA
bb93: 69 6b        ADC #$6b
bb95: aa           TAX
bb96: 68           PLA
bb97: ac 87 6c     LDY $6c87
bb9a: 60           RTS

bb9b: c8           INY
bb9c: c8           INY
bb9d: c8           INY
bb9e: c8           INY
bb9f: c8           INY
bba0: c8           INY
bba1: c8           INY
bba2: c8           INY
bba3: 60           RTS

bba4: a9 ff        LDA #$ff
bba6: a2 03        LDX #$03
bba8: 9d c9 6b     STA $6bc9,X
bbab: ca           DEX
bbac: 10 fa        BPL +$fa  [$bba8]
bbae: e8           INX
bbaf: a0 00        LDY #$00
bbb1: 20 cc bb     JSR $bbcc
bbb4: ad b1 6d     LDA $6db1
bbb7: f0 07        BEQ +$07  [$bbc0]
bbb9: bd b7 6b     LDA $6bb7,X   ; monster type in this slot
bbbc: 99 c9 6b     STA $6bc9,Y
bbbf: c8           INY
bbc0: e8           INX
bbc1: e0 09        CPX #$09
bbc3: d0 ec        BNE +$ec  [$bbb1]
bbc5: 60           RTS

; A=monster type in slot X, set Z flag if no monster
bbc6: bd b7 6b     LDA $6bb7,X   ; monster type in this slot
bbc9: c9 ff        CMP #$ff
bbcb: 60           RTS

bbcc: a9 00        LDA #$00
bbce: 8d b1 6d     STA $6db1
bbd1: 8a           TXA
bbd2: 48           PHA
bbd3: 98           TYA
bbd4: 48           PHA
bbd5: 20 c6 bb     JSR $bbc6   ; A=monster type in slot X, set Z flag if no monster
bbd8: f0 0f        BEQ +$0f  [$bbe9]
bbda: a0 00        LDY #$00
bbdc: d9 c9 6b     CMP $6bc9,Y
bbdf: f0 08        BEQ +$08  [$bbe9]
bbe1: c8           INY
bbe2: c0 04        CPY #$04
bbe4: d0 f6        BNE +$f6  [$bbdc]
bbe6: ee b1 6d     INC $6db1
bbe9: 68           PLA
bbea: a8           TAY
bbeb: 68           PLA
bbec: aa           TAX
bbed: 60           RTS

; do attack sparkles
bbee: ee b6 6b     INC $6bb6
bbf1: 20 ff bb     JSR $bbff
bbf4: a9 00        LDA #$00
bbf6: 8d b6 6b     STA $6bb6
bbf9: 60           RTS

; do attack sound & sparkles
bbfa: a9 02        LDA #$02
bbfc: 20 b8 be     JSR $beb8   ; Play sound
bbff: ad 8a 6c     LDA $6c8a
bc02: 48           PHA
bc03: 20 30 f2     JSR $f230   ; Swap $90-f with $6d74-83
bc06: ae 92 6c     LDX $6c92
bc09: d0 03        BNE +$03  [$bc0e]
bc0b: 4c b0 bc     JMP $bcb0
bc0e: ca           DEX
bc0f: d0 03        BNE +$03  [$bc14]
bc11: 4c 2e bd     JMP $bd2e
bc14: ca           DEX
bc15: d0 03        BNE +$03  [$bc1a]
bc17: 4c 82 bd     JMP $bd82
bc1a: 68           PLA
bc1b: a9 20        LDA #$20
bc1d: 8d 14 6d     STA $6d14
bc20: a9 40        LDA #$40
bc22: 8d 15 6d     STA $6d15
bc25: a9 60        LDA #$60
bc27: 8d 16 6d     STA $6d16
bc2a: a9 78        LDA #$78
bc2c: 8d 17 6d     STA $6d17
bc2f: a9 14        LDA #$14
bc31: 8d 18 6d     STA $6d18
bc34: 20 db bd     JSR $bddb
bc37: ad b6 6b     LDA $6bb6
bc3a: f0 46        BEQ +$46  [$bc82]
bc3c: ad 92 6c     LDA $6c92
bc3f: c9 04        CMP #$04
bc41: f0 3f        BEQ +$3f  [$bc82]
bc43: a9 0c        LDA #$0c
bc45: 8d 14 6d     STA $6d14
bc48: a9 c2        LDA #$c2
bc4a: 8d 15 6d     STA $6d15
bc4d: a9 20        LDA #$20
bc4f: 8d 16 6d     STA $6d16
bc52: 20 00 fe     JSR $fe00   ; wait for V-blank
bc55: ad 16 6d     LDA $6d16
bc58: 8d 06 20     STA $2006
bc5b: ad 15 6d     LDA $6d15
bc5e: 8d 06 20     STA $2006
bc61: a9 00        LDA #$00
bc63: 20 fc bc     JSR $bcfc
bc66: 20 fc bc     JSR $bcfc
bc69: 20 8a 97     JSR $978a   ; Enable screen
bc6c: 18           CLC
bc6d: ad 15 6d     LDA $6d15
bc70: 69 20        ADC #$20
bc72: 8d 15 6d     STA $6d15
bc75: 90 03        BCC +$03  [$bc7a]
bc77: ee 16 6d     INC $6d16
bc7a: 20 7c a0     JSR $a07c   ; some sound thing
bc7d: ce 14 6d     DEC $6d14
bc80: d0 d0        BNE +$d0  [$bc52]
bc82: 4c d8 bd     JMP $bdd8    ; Swap $90-f with $6d74-83
bc85: 48           PHA
bc86: 20 00 fe     JSR $fe00   ; wait for V-blank
bc89: a5 9b        LDA $9b
bc8b: 8d 06 20     STA $2006
bc8e: a5 9a        LDA $9a
bc90: 8d 06 20     STA $2006
bc93: 68           PLA
bc94: 60           RTS
bc95: 08           PHP
bc96: 48           PHA
bc97: 18           CLC
bc98: a9 10        LDA #$10
bc9a: 65 9a        ADC $9a
bc9c: 85 9a        STA $9a
bc9e: 90 02        BCC +$02  [$bca2]
bca0: e6 9b        INC $9b
bca2: 68           PLA
bca3: 28           PLP
bca4: 60           RTS
bca5: 8a           TXA
bca6: 48           PHA
bca7: 20 db bd     JSR $bddb
bcaa: 68           PLA
bcab: aa           TAX
bcac: ad b6 6b     LDA $6bb6
bcaf: 60           RTS
bcb0: 68           PLA
bcb1: 48           PHA
bcb2: 0a           ASL
bcb3: aa           TAX
bcb4: bd 1c bd     LDA $bd1c,X
bcb7: 8d 14 6d     STA $6d14
bcba: 18           CLC
bcbb: 69 18        ADC #$18
bcbd: 8d 16 6d     STA $6d16
bcc0: bd 1d bd     LDA $bd1d,X
bcc3: 8d 15 6d     STA $6d15
bcc6: 18           CLC
bcc7: 69 18        ADC #$18
bcc9: 8d 17 6d     STA $6d17
bccc: a9 06        LDA #$06
bcce: 8d 18 6d     STA $6d18
bcd1: 20 a5 bc     JSR $bca5
bcd4: f0 22        BEQ +$22  [$bcf8]
bcd6: 68           PLA
bcd7: 0a           ASL
bcd8: bd 92 be     LDA $be92,X
bcdb: 85 9a        STA $9a
bcdd: bd 93 be     LDA $be93,X
bce0: 85 9b        STA $9b
bce2: a9 04        LDA #$04
bce4: 85 90        STA $90
bce6: 20 85 bc     JSR $bc85
bce9: a9 00        LDA #$00
bceb: 20 ff bc     JSR $bcff
bcee: 20 09 bd     JSR $bd09
bcf1: c6 90        DEC $90
bcf3: d0 f1        BNE +$f1  [$bce6]
bcf5: 4c d8 bd     JMP $bdd8    ; Swap $90-f with $6d74-83
bcf8: 68           PLA
bcf9: 4c d8 bd     JMP $bdd8    ; Swap $90-f with $6d74-83
bcfc: 20 02 bd     JSR $bd02
bcff: 20 02 bd     JSR $bd02
bd02: 8d 07 20     STA $2007
bd05: 8d 07 20     STA $2007
bd08: 60           RTS
bd09: 20 8a 97     JSR $978a   ; Enable screen
bd0c: a5 9a        LDA $9a
bd0e: 18           CLC
bd0f: 69 20        ADC #$20
bd11: 85 9a        STA $9a
bd13: a5 9b        LDA $9b
bd15: 69 00        ADC #$00
bd17: 85 9b        STA $9b
bd19: 4c 7c a0     JMP $a07c   ; some sound thing
bd1c: 10 50        BPL +$50  [$bd6e]
bd1e: 10 30        BPL +$30  [$bd50]
bd20: 10 70        BPL +$70  [$bd92]
bd22: 30 50        BMI +$50  [$bd74]
bd24: 30 30        BMI +$30  [$bd56]
bd26: 30 70        BMI +$70  [$bd98]
bd28: 50 50        BVC +$50  [$bd7a]
bd2a: 50 30        BVC +$30  [$bd5c]
bd2c: 50 70        BVC +$70  [$bd9e]
bd2e: 68           PLA
bd2f: 48           PHA
bd30: 0a           ASL
bd31: aa           TAX
bd32: bd 7a bd     LDA $bd7a,X
bd35: 8d 14 6d     STA $6d14
bd38: 18           CLC
bd39: 69 28        ADC #$28
bd3b: 8d 16 6d     STA $6d16
bd3e: bd 7b bd     LDA $bd7b,X
bd41: 8d 15 6d     STA $6d15
bd44: 18           CLC
bd45: 69 28        ADC #$28
bd47: 8d 17 6d     STA $6d17
bd4a: a9 08        LDA #$08
bd4c: 8d 18 6d     STA $6d18
bd4f: 20 a5 bc     JSR $bca5
bd52: f0 22        BEQ +$22  [$bd76]
bd54: 68           PLA
bd55: 0a           ASL
bd56: bd a4 be     LDA $bea4,X
bd59: 85 9a        STA $9a
bd5b: bd a5 be     LDA $bea5,X
bd5e: 85 9b        STA $9b
bd60: a9 06        LDA #$06
bd62: 85 90        STA $90
bd64: 20 85 bc     JSR $bc85
bd67: a9 00        LDA #$00
bd69: 20 fc bc     JSR $bcfc
bd6c: 20 09 bd     JSR $bd09
bd6f: c6 90        DEC $90
bd71: d0 f1        BNE +$f1  [$bd64]
bd73: 4c d8 bd     JMP $bdd8    ; Swap $90-f with $6d74-83
bd76: 68           PLA
bd77: 4c d8 bd     JMP $bdd8    ; Swap $90-f with $6d74-83
bd7a: 10 30        BPL +$30  [$bdac]
bd7c: 10 60        BPL +$60  [$bdde]
bd7e: 50 30        BVC +$30  [$bdb0]
bd80: 50 60        BVC +$60  [$bde2]
bd82: 48           PHA
bd83: c9 02        CMP #$02
bd85: b0 04        BCS +$04  [$bd8b]
bd87: 68           PLA
bd88: 4c 2e bd     JMP $bd2e
bd8b: 68           PLA
bd8c: 38           SEC
bd8d: e9 02        SBC #$02
bd8f: 0a           ASL
bd90: aa           TAX
bd91: bd cc bd     LDA $bdcc,X
bd94: 8d 14 6d     STA $6d14
bd97: 18           CLC
bd98: 69 18        ADC #$18
bd9a: 8d 16 6d     STA $6d16
bd9d: bd cd bd     LDA $bdcd,X
bda0: 8d 15 6d     STA $6d15
bda3: 18           CLC
bda4: 69 18        ADC #$18
bda6: 8d 17 6d     STA $6d17
bda9: a9 0f        LDA #$0f
bdab: 8d 18 6d     STA $6d18
bdae: 20 db bd     JSR $bddb
bdb1: 68           PLA
bdb2: ad 8a 6c     LDA $6c8a
bdb5: 38           SEC
bdb6: e9 02        SBC #$02
bdb8: 0a           ASL
bdb9: aa           TAX
bdba: ad b6 6b     LDA $6bb6
bdbd: f0 19        BEQ +$19  [$bdd8]
bdbf: bd ac be     LDA $beac,X
bdc2: 85 9a        STA $9a
bdc4: bd ad be     LDA $bead,X
bdc7: 85 9b        STA $9b
bdc9: 4c e2 bc     JMP $bce2

bdcc: 40 50        .DB $40, $50
bdce: 40 30        .DB $40, $30
bdd0: 40 70        .DB $40, $70
bdd2: 60 50        .DB $60, $50
bdd4: 60 30        .DB $60, $30
bdd6: 60 70        .DB $60, $70

bdd8: 4c 30 f2     JMP $f230    ; Swap $90-f with $6d74-83

bddb: ad b6 6b     LDA $6bb6
bdde: f0 01        BEQ +$01  [$bde1]
bde0: 60           RTS
bde1: a9 00        LDA #$00
bde3: 85 92        STA $92
bde5: a9 00        LDA #$00
bde7: a2 02        LDX #$02
bde9: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
bdec: 0a           ASL
bded: 0a           ASL
bdee: 18           CLC
bdef: 69 f4        ADC #$f4
bdf1: a6 92        LDX $92
bdf3: 20 1b be     JSR $be1b
bdf6: e6 92        INC $92
bdf8: a5 92        LDA $92
bdfa: c9 03        CMP #$03
bdfc: d0 e7        BNE +$e7  [$bde5]
bdfe: ce 18 6d     DEC $6d18
be01: d0 de        BNE +$de  [$bde1]
be03: a0 30        LDY #$30
be05: a9 ff        LDA #$ff
be07: a2 00        LDX #$00
be09: 9d d0 02     STA $02d0,X
be0c: e8           INX
be0d: 88           DEY
be0e: d0 f9        BNE +$f9  [$be09]
be10: 20 00 fe     JSR $fe00   ; wait for V-blank
be13: a9 02        LDA #$02    ; upload sprites
be15: 8d 14 40     STA $4014
be18: 4c 7c a0     JMP $a07c   ; some sound thing
be1b: 48           PHA
be1c: 8a           TXA
be1d: 0a           ASL
be1e: 0a           ASL
be1f: 0a           ASL
be20: 0a           ASL
be21: 18           CLC
be22: 69 d0        ADC #$d0
be24: 85 90        STA $90
be26: a9 02        LDA #$02
be28: 85 91        STA $91
be2a: ad 14 6d     LDA $6d14
be2d: ae 16 6d     LDX $6d16
be30: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
be33: a0 03        LDY #$03
be35: 20 68 be     JSR $be68
be38: ad 15 6d     LDA $6d15
be3b: ae 17 6d     LDX $6d17
be3e: 20 5d ae     JSR $ae5d   ; A = RND (A .. X)
be41: a0 00        LDY #$00
be43: 20 7e be     JSR $be7e
be46: a9 02        LDA #$02
be48: a0 02        LDY #$02
be4a: 20 68 be     JSR $be68
be4d: 68           PLA
be4e: a0 01        LDY #$01
be50: a2 04        LDX #$04
be52: 91 90        STA ($90),Y
be54: 20 9f bb     JSR $bb9f   ; Y+=4
be57: 18           CLC
be58: 69 01        ADC #$01
be5a: ca           DEX
be5b: d0 f5        BNE +$f5  [$be52]
be5d: 20 00 fe     JSR $fe00   ; wait for V-blank
be60: a9 02        LDA #$02    ; upload sprites
be62: 8d 14 40     STA $4014
be65: 4c 7c a0     JMP $a07c   ; some sound thing
be68: 91 90        STA ($90),Y
be6a: 48           PHA
be6b: 18           CLC
be6c: 69 08        ADC #$08
be6e: 20 8c be     JSR $be8c
be71: 68           PLA
be72: 20 8c be     JSR $be8c
be75: 20 9f bb     JSR $bb9f   ; Y+=4
be78: 18           CLC
be79: 69 08        ADC #$08
be7b: 91 90        STA ($90),Y
be7d: 60           RTS
be7e: 91 90        STA ($90),Y
be80: 20 8c be     JSR $be8c
be83: 18           CLC
be84: 69 08        ADC #$08
be86: 20 8c be     JSR $be8c
be89: 4c 8c be     JMP $be8c
be8c: 20 9f bb     JSR $bb9f   ; Y+=4
be8f: 91 90        STA ($90),Y
be91: 60           RTS
be92: 42           .DB $42
be93: 21 c2        AND ($c2,X)
be95: 20 c2 21     JSR $21c2
be98: 46 21        LSR $21
be9a: c6 20        DEC $20
be9c: c6 21        DEC $21
be9e: 4a           LSR
be9f: 21 ca        AND ($ca,X)
bea1: 20 ca 21     JSR $21ca
bea4: c2           .DB $C2
bea5: 20 82 21     JSR $2182
bea8: ca           DEX
bea9: 20 8a 21     JSR $218a
beac: 48           PHA
bead: 21 c8        AND ($c8,X)
beaf: 20 c8 21     JSR $21c8
beb2: 4c 21 cc     JMP $cc21
beb5: 20 cc 21     JSR $21cc
beb8: 48           PHA
beb9: 20 8f bf     JSR $bf8f   ; Swap $90-9f with $6d97-6da6
bebc: 68           PLA
bebd: 0a           ASL
bebe: aa           TAX
bebf: bd a4 bf     LDA $bfa4,X
bec2: 85 9a        STA $9a
bec4: 85 9c        STA $9c
bec6: 85 9e        STA $9e
bec8: bd a5 bf     LDA $bfa5,X
becb: 85 9b        STA $9b
becd: 85 9d        STA $9d
becf: 85 9f        STA $9f
bed1: a5 9c        LDA $9c
bed3: 18           CLC
bed4: 69 03        ADC #$03
bed6: 85 9c        STA $9c
bed8: a5 9d        LDA $9d
beda: 69 00        ADC #$00
bedc: 85 9d        STA $9d
bede: a5 9e        LDA $9e
bee0: 18           CLC
bee1: 69 08        ADC #$08
bee3: 85 9e        STA $9e
bee5: a5 9f        LDA $9f
bee7: 69 00        ADC #$00
bee9: 85 9f        STA $9f
beeb: a0 00        LDY #$00
beed: b1 9a        LDA ($9a),Y
beef: 8d 7e 00     STA $007e
bef2: 85 94        STA $94
bef4: c8           INY
bef5: b1 9a        LDA ($9a),Y
bef7: 85 98        STA $98
bef9: c8           INY
befa: b1 9a        LDA ($9a),Y
befc: 85 99        STA $99
befe: a9 01        LDA #$01
bf00: 85 9a        STA $9a
bf02: 85 9b        STA $9b
bf04: 20 26 bf     JSR $bf26   ; some sound thing
bf07: 20 5e bf     JSR $bf5e   ; some sound thing
bf0a: a9 0f        LDA #$0f
bf0c: 8d 15 40     STA $4015
bf0f: 20 8f bf     JSR $bf8f   ; Swap $90-9f with $6d97-6da6
bf12: 60           RTS

; some sound thing
bf13: 20 8f bf     JSR $bf8f   ; Swap $90-9f with $6d97-6da6
bf16: a5 94        LDA $94
bf18: f0 08        BEQ +$08  [$bf22]
bf1a: 20 26 bf     JSR $bf26   ; some sound thing
bf1d: 20 5e bf     JSR $bf5e   ; some sound thing
bf20: c6 94        DEC $94
bf22: 20 8f bf     JSR $bf8f   ; Swap $90-9f with $6d97-6da6
bf25: 60           RTS

; some sound thing
bf26: a5 98        LDA $98
bf28: f0 33        BEQ +$33  [$bf5d]
bf2a: c6 9a        DEC $9a
bf2c: d0 2f        BNE +$2f  [$bf5d]
bf2e: a0 04        LDY #$04
bf30: b1 9c        LDA ($9c),Y
bf32: 85 9a        STA $9a
bf34: a0 00        LDY #$00
bf36: b1 9c        LDA ($9c),Y
bf38: 8d 04 40     STA $4004
bf3b: c8           INY
bf3c: b1 9c        LDA ($9c),Y
bf3e: 8d 05 40     STA $4005
bf41: c8           INY
bf42: b1 9c        LDA ($9c),Y
bf44: 8d 06 40     STA $4006
bf47: c8           INY
bf48: b1 9c        LDA ($9c),Y
bf4a: 8d 07 40     STA $4007
bf4d: 18           CLC
bf4e: a5 9c        LDA $9c
bf50: 69 08        ADC #$08
bf52: 85 9c        STA $9c
bf54: a5 9d        LDA $9d
bf56: 69 00        ADC #$00
bf58: 85 9d        STA $9d
bf5a: c6 98        DEC $98
bf5c: 60           RTS
bf5d: 60           RTS

; some sound thing
bf5e: a5 99        LDA $99
bf60: f0 2c        BEQ +$2c  [$bf8e]
bf62: c6 9b        DEC $9b
bf64: d0 28        BNE +$28  [$bf8e]
bf66: a0 02        LDY #$02
bf68: b1 9e        LDA ($9e),Y
bf6a: 85 9b        STA $9b
bf6c: a0 00        LDY #$00
bf6e: b1 9e        LDA ($9e),Y
bf70: 8d 0c 40     STA $400c
bf73: c8           INY
bf74: b1 9e        LDA ($9e),Y
bf76: 8d 0e 40     STA $400e
bf79: a9 ff        LDA #$ff
bf7b: 8d 0f 40     STA $400f
bf7e: 18           CLC
bf7f: a5 9e        LDA $9e
bf81: 69 08        ADC #$08
bf83: 85 9e        STA $9e
bf85: a5 9f        LDA $9f
bf87: 69 00        ADC #$00
bf89: 85 9f        STA $9f
bf8b: c6 99        DEC $99
bf8d: 60           RTS
bf8e: 60           RTS

; Swap $90-9f with $6d97-6da6
bf8f: a2 00        LDX #$00
bf91: a0 10        LDY #$10
bf93: b5 90        LDA $90,X
bf95: 48           PHA
bf96: bd 97 6d     LDA $6d97,X
bf99: 95 90        STA $90,X
bf9b: 68           PLA
bf9c: 9d 97 6d     STA $6d97,X
bf9f: e8           INX
bfa0: 88           DEY
bfa1: d0 f0        BNE +$f0  [$bf93]
bfa3: 60           RTS

bfa4: aa bf        .DW $bfaa
bfa6: b5 bf        .DW $bfb5
bfa8: d8 bf        .DW $bfd8

bfaa: 3c 01 01 ff  .DB $3c, $01, $01, $ff
bfae: fb 00 fb 32  .DB $fb, $00, $fb, $32
bfb2: 00 00 1e 0f  .DB $00, $00, $1e, $0f
bfb6: 01 04 00 00  .DB $01, $04, $00, $00
bfba: 00 00 01 2f  .DB $00, $00, $01, $2f
bfbe: 0e 03 00 00  .DB $0e, $03, $00, $00
bfc2: 00 00 01 2f  .DB $00, $00, $01, $2f
bfc6: 0a 06 00 00  .DB $0a, $06, $00, $00
bfca: 00 00 01 2f  .DB $00, $00, $01, $2f
bfce: 04 06 00 00  .DB $04, $06, $00, $00
bfd2: 00 00 01 00  .DB $00, $00, $01, $00
bfd6: 00 01 0c 01  .DB $00, $01, $0c, $01
bfda: 04 00 00 00  .DB $04, $00, $00, $00
bfde: 00 01 2f 07  .DB $00, $01, $2f, $07
bfe2: 03 00 00 00  .DB $03, $00, $00, $00
bfe6: 00 01 2f 0c  .DB $00, $01, $2f, $0c
bfea: 05 00 00 00  .DB $05, $00, $00, $00
bfee: 00 01 2f 07  .DB $00, $01, $2f, $07
bff2: 04 00 00 00  .DB $04, $00, $00, $00
bff6: 00 01 00 00  .DB $00, $01, $00, $00
bffa: 01 00 00 01  .DB $01, $00, $00, $01
bffe: 09 07        .DB $09, $07
